您的位置:程序门 -> delphi -> 数据库相关



delphi在英文win2003操作系统下从oracle中获取得字符串写入sql server 中为乱码!该如何解决?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


delphi在英文win2003操作系统下从oracle中获取得字符串写入sql server 中为乱码!该如何解决?[无满意答案结贴]
发表于:2007-12-17 16:44:34 楼主
我的具体情况是这样的:
1.oracle的language设置:
在sql*plus工具中查询server端的字符集sql>   select   userenv('language')   from   dual;得出结果   american_america.we8mswin1252
在client端的字符集为:na(之后,我通过注册表将na   该为了american_america.we8mswin1252)
注:server端的oracle字符集设置不可更改

2.client端的os为英文版的(此项设置为用户需要,不可更改)

3.sql   server端的数据库是chinese_prc_ci_as的

问题出现了,我从oracle中获得的字符串存入sql   server   中后却为乱码,这个问题已经困扰我很多天了,一直没有解决,请大家帮帮忙!

先谢谢了!!
发表于:2007-12-17 16:57:551楼 得分:0
orcale没用过

不过sqlserver中我们都是在内容前加大写的n就可以了
发表于:2007-12-17 17:06:202楼 得分:0
又是字符集的问题,头痛~~~
发表于:2007-12-17 22:07:313楼 得分:0
to   brightyang:

补充一点:我的开发工具是delphhi2007

我按照你的说法试了一下,报错,不知是否是语句写法的问题,我是这样写的:
update   table1   set   name=n:name   where   id=1000

错误信息为:invalid   column   name   'n@p1'

我该如何写这条语句呢?


发表于:2007-12-17 22:39:244楼 得分:0
to       brightyang:  

我试了另外一种写法,update       table1       set       name=n'''+name+'''   where       id=1000  
语法错误没有了
但是存入的数据还是乱码

各位大侠有什莫好的解决办法????

补充:我在调试时从oracle中抓取得数据就是乱码,这该如何解决,使其不是乱码呢????


发表于:2007-12-17 22:49:465楼 得分:0
应该要操作系统支持中文吧
发表于:2007-12-17 23:08:046楼 得分:0
to   bear_hx:

在不改变os语言设置的前提下,还有别的办法吗???
发表于:2007-12-18 09:20:067楼 得分:0
up
发表于:2007-12-18 09:44:228楼 得分:0
乱码不是因为你如何去操作数据库,而是在中间过程当中传入的数据。建议中间不要使用ansistring,而使用widestring。对于ftstring类型字段,需要特别注意进行还原(最好是按照其本身的字符集转换成unicode),从而以ftwidestring进行操作。
发表于:2007-12-18 09:48:499楼 得分:0
可以考虑用强制区域语言转换

发表于:2007-12-18 10:02:5410楼 得分:0
你的服务端的字符集与客户端的字符集相同吗?
发表于:2007-12-18 10:34:5011楼 得分:0
to   brightyang:
 
你说的是setthreadlocale吗?我尝试了这种方法,但是似乎没有效果,写法如下:
application.initialize;
setthreadlocale(dword(word(sort_default)   shl   16)   or
                                    dword(word(sublang_chinese_simplified)   shl   10)   or
                                    dword(word(lang_chinese)));
......
不知什莫原因


to   hongqi162:
在我的问题描述中已经写清楚了,两端的字符集是一样的


发表于:2007-12-19 13:33:5912楼 得分:0
up
发表于:2008-01-15 16:11:0613楼 得分:0
虽然过了这麽久没有,大家没有发帖子,但我还是要感谢大家的参与

这个问题,我已解决,要结帖了,再次表示感谢!



快速检索

最新资讯
热门点击