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

大海无疆2018 2018-01-31 12:33:54
oracle数据库字符集为AMERICAN_AMERICA.us7ascii,delphi7读取中文出来乱码,如何解决,客户的数据库字符集不能更改,只能通过delphi转码,急急
...全文
3395 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不知道如何转换,中文读取出来都是乱码

2,496

社区成员

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

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