Oracle+ADO+Delphi,字符集问题200分求解 分不够可以补(200)

  • 主题发起人 主题发起人 cb20000
  • 开始时间 开始时间
C

cb20000

Unregistered / Unconfirmed
GUEST, unregistred user!
Oracle 9.02版本,字符集是US7ASCII 在SQLPLUS下,对数据的变更添加中文信息,都能在SQLPLUS下显示正常,不过,在软件里依然是“?”但是在软件中当使用数据集使用Post提交的中文数据都能显示正常,但是使用SQL语句使用ExecSQL提交SQL语句后,中文信息依然是“?”,希望诸位能帮帮忙,看一下有没有好的解决办法或思路。
 
可能是对中文不支持。是不是打些补丁来支持中文
 
当然支持中文了,不过还是感谢你的参与
 
我也是用Oracle9+ADO+Delphi的,而且都是使用EXECSQL提交,没发现这个问题。你字段类型是什么的啊?——也许没懂楼主意思
 
字段类型都是VARCHAR2 的~这样吧~我写个代码举例,这样可能比较容易理解例:var qry: TADOQuery;begin qry.close; qry.sql.clear; qry.sql.text:='select oper_name from T_manager' qry.open; //查询出来的数据这个时候显示'???' qry.Edit; qry.FieldByName('oper_name').AsString:='管理员'; qry.Post; //这样变更后,'oper_name'字段显示的就是“管理员”,这样变更或者提交的中文数据都是能够正确显示的。 //但是,以下的方法,变更后显示就又变成"???"了 qry.close; qry.sql.clear; qry.sql.text:='update T_manager set oper_name=''管理员'''; qry.execsql;end;我查了一些相关的资料,是因为我Oracle服务器端和客户端的字符集用的不一样么?可是我在注册表中查了一下,也都修改成AMERICAN_AMERICA.US7ASCII 了 啊?哪里还不对么?请有这方面经验的朋友帮下忙咯
 
还是希望有解决过这类问题的朋友可以帮忙下,分不够还可以补
 
兄弟们,帮帮忙吧~
 
我也遇到过这种问题,解决方法:qry.sql.text:='update T_manager set oper_name=N''管理员'''
 
涉及到字符集转换的问题,建议你最好不要直接用US7ASCII字符集,改用ZHS16GBK就好了。不然会搞得人头大的。
 
1、应该肯定是服务器和客户端字符集的问题,而且修改客户端的字符集也不是只改注册表吧。2、为什么要用US7ASCII字符集,这个好象是最小的字符集,只有英语国家才用的吧,如果只有简体中文,用ZHS16GBK,不行就用UNICODE的一个字符集(具体名字我忘了)。3、试试将字符的类型改成NVARCHAR2试试看。
 
后退
顶部