oracle数据库字符集为AMERICAN_AMERICA.us7ascii,delphi7读取出来为乱码

大海无疆2018 2018-01-31 12:33:54
oracle数据库字符集为AMERICAN_AMERICA.us7ascii,delphi7读取中文出来乱码,如何解决,客户的数据库字符集不能更改,只能通过delphi转码,急急
...全文
3669 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
pcfans007 2018-02-26
  • 打赏
  • 举报
回复
换版本的醉了
kenlewis 2018-02-26
  • 打赏
  • 举报
回复
我倒是觉得UniConnOracle.SpecificOptions.Values['Charset']应该设置成ASCII才对
lyhoo163 2018-02-25
  • 打赏
  • 举报
回复
这是系统字符集的问题。 根本的解决办法,使用Delphi2010。
pcfans007 2018-02-25
  • 打赏
  • 举报
回复
用PL改几下NSL_LANG就能试出来
pcfans007 2018-02-25
  • 打赏
  • 举报
回复
当数据库是英文字符集时,他的原始编码如果不是GBK,是很容易乱码的,这时就如楼上所说,dump一下中文字段,看看其原始编码到底是什么 ,如果不是已知的编码,那极有可能是存储时发生了转换,这时,只有你把环境设置为数据来源一致时,才能解决。这种情况是编码丢失,但内容还能还原,即使是GBK编码,DUMP出来也不是GBK。觉的没几种,一试便知
  • 打赏
  • 举报
回复
引用 7 楼 zhanghuip 的回复:
但是通过plsql连接,直接查询是可以显示中文的,问了他们开发商说他们显示也是没问题,我们只能读取他们的数据
这样啊,那你可以用rawtohex函数获取数据编码看看,和已知数据比较一下。
  • 打赏
  • 举报
回复
首先要确定是数据库字符集为AMERICAN_AMERICA.us7ascii还是客户端NLS_LANG设置为AMERICAN_AMERICA.us7ascii,如果是后者,这个设置只决定显示,不影响数据库中的实际存储,可以改,不改也可以用rawtohex函数获取原始编码的数据:select rawtohex(xxx) from ...。 如果是前者(用sqlplus客户端工具连接数据库,输入select * from nls_database_parameters;看看输出),那就比较麻烦了,US7ASCII是7位ASCII编码,最高位是0,所以中文存进去的时候就信息丢失了,读出来也不可能正确。只能写入之前先编码,比如BASE64,读出来之后再解码。
  • 打赏
  • 举报
回复
那你别用D7了,换D2009+支持unicode的版本。
大海无疆2018 2018-01-31
  • 打赏
  • 举报
回复
喔喔,我看看,不管怎样,非常感谢您
大海无疆2018 2018-01-31
  • 打赏
  • 举报
回复
但是通过plsql连接,直接查询是可以显示中文的,问了他们开发商说他们显示也是没问题,我们只能读取他们的数据
  • 打赏
  • 举报
回复
那应该就是数据写入数据库时就丢失信息了,你只能先用兼容US7ASCII的编码比如BASE64先编码再写入,读取后先解码再显示。
大海无疆2018 2018-01-31
  • 打赏
  • 举报
回复
edit2.text:=Utf8Decode(YlQuery_Data['payer']); 还是乱码,我用的数据连接组件是unidac ,我这里设置 UniConnOracle.SpecificOptions.Values['Charset'] := 'SIMPLIFIED CHINESE_CHINA.UTF8'; 还是不行,
大海无疆2018 2018-01-31
  • 打赏
  • 举报
回复
好的,我试试看
  • 打赏
  • 举报
回复
那你把NLS_LANG为SIMPLIFIED CHINESE_CHINA.UTF8,D7读出来UTF8Decode再显示。
大海无疆2018 2018-01-31
  • 打赏
  • 举报
回复
您好,非常感谢2楼的回复,服务器数据库字符集就是AMERICAN_AMERICA.us7ascii,这个是确定的,我在客户端的机器里设置环境变量NLS_LANG为SIMPLIFIED CHINESE_CHINA.US7ASCII后,通过PLSQL查询是可以显示中文了,但通过delphi不知道如何转换,中文读取出来都是乱码
【更新至2025年】2001-2025年上市公司数字化转型年报词频统计(吴非、赵宸宇、甄红线)(300+年报词频统计) 1、时间:2001-2025年 2、来源:上市公司年报 3、参考文献:企业数字化转型与资本市场表现——来自股票流动性的经验证据(吴非) 数字化转型如何影响企业全要素生产率(赵宸宇) 知识产权行政保护与企业数字化转型(甄红线) 4、方法说明:(1)参考吴非老师的做法,对人工智能技术、大数据技术、云计算技术、区块链技术、数字技术运用五个维度76个数字化相关词频进行统计 (2)参考赵宸宇老师的做法,对数字技术应用、互联网商业模式、智能制造、现代信息系统四个维度99个数字化相关词频进行统计 (3)参考甄红线老师的做法,对技术分类、组织赋能、数字化应用等类别下139个数字化相关词频进行统计 5、指标:年份、股票代码、公司简称、行业名称、行业代码、全文-文本总长度、仅中英文-文本总长度、人工智能技术-吴、大数据技术-吴、云计算技术-吴、区块链技术-吴、数字技术运用-吴、数字技术应用-赵、互联网商业模式-赵、智能制造-赵、现代信息系统-赵、技术分类-人工智能技术-甄、技术分类-区块链技术-甄、技术分类-云计算技术-甄、技术分类-大数据技术-甄、组织赋能-人工智能技术-甄、组织赋能-云计算技术-甄、组织赋能-大数据技术-甄、组织赋能-广义数字技术-甄、数字化应用-技术创新-甄、数字化应用-流程创新-甄、数字化应用-业务创新-甄、人工智能、商业智能、图像理解、投资决策辅助系统、智能数据分析、智能机器人、机器学习、深度学习、语义搜索、生物识别技术、人脸识别、语音识别、身份验证、自动驾驶、自然语言处理、大数据、数据挖掘、文本挖掘、数据可视化、异构数据、征信、增强现实、混合现实、虚拟现实、云计算、流计算、图计算、内存计算、多方安全计算、类脑计算、绿色计算、认知计算等300+词频

2,508

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧