64位Linux下Oracle字符转译的问题---100分求解

langcai1981 2009-05-19 04:57:21
在项目开发过程中,遇到了一个比较麻烦的问题,在存储越南文时,出现了怪异的事情,这个问题其实出现了很长时间,之前的开发人员一直以为是开发工具的问题,在存储过程中出现了转译功能,其实这种怀疑也不是没有道理,因为用ASP.NET直接存储时,并没有出现乱码,但在开发工具的框架下编译完成发布后,再在页面上进行越南文的输入,存储到数据库就转换成乱码!
经过分析后,在Windows下安装Oracle测试此程序并没有出现乱码,越南文存储OK!
我认为结论应该是Linux下字符转译的问题.如果大家有遇到类似问题,请告诉答案!非常感激
...全文
220 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
langcai1981 2009-06-01
  • 打赏
  • 举报
回复
希望大家能够再给点建议,实在给不出将会于明天结贴,还是给分,谢谢大家!
langcai1981 2009-05-21
  • 打赏
  • 举报
回复
我之前的NLS_LANG为SIMPLIFIED CHINESE_CHINA.ZHS16GBK,是标准的GBK编码方式,后面改成american_america.VN8MSWIN1258,此为支持越南文的环境变量.
至于数据库的字符集上已经给出,请您看下8楼我的回复!
希望大家能够给出更多的建议,以便进一步测试!
langcai1981 2009-05-21
  • 打赏
  • 举报
回复
由于推测有可能与客户端字符集有关,这种客户端字符集的修改也只是为了测试是否与客户端字符集有关.
Linux主机的参数我将测试下看修改以后越南文输入是否正常!

[Quote=引用 15 楼 vc555 的回复:]
NLS_LANG环境变量值,是你执行insert操作的OS的实际字符集。不是由你任意改的。
DATABASE字符集是AL32UTF8,所以保存越南文是没问题的。

linux默认是utf8,你在LINUX主机上:export NLS_LANG="SIMPLIFIED CHINESE_CHINA".AL32UTF8
然后在“该机”上重新insert看看。
[/Quote]
vc555 2009-05-21
  • 打赏
  • 举报
回复
NLS_LANG环境变量值,是你执行insert操作的OS的实际字符集。不是由你任意改的。
DATABASE字符集是AL32UTF8,所以保存越南文是没问题的。

linux默认是utf8,你在LINUX主机上:export NLS_LANG="SIMPLIFIED CHINESE_CHINA".AL32UTF8
然后在“该机”上重新insert看看。
vc555 2009-05-20
  • 打赏
  • 举报
回复
列出你数据库的字符集和插入数据时所在OS上的nls_lang变量。
vanva5257 2009-05-20
  • 打赏
  • 举报
回复
个人觉得可能是字符集的问题
langcai1981 2009-05-19
  • 打赏
  • 举报
回复
晚上再测试了一下,存储到Windows下的DB的越南文也有部分被转译成乱码!真的是很奇怪,继续等待...
superhsj 2009-05-19
  • 打赏
  • 举报
回复
up
langcai1981 2009-05-19
  • 打赏
  • 举报
回复
上面的参数是32位Linux下完装的Oralce 11的NLS参数!
langcai1981 2009-05-19
  • 打赏
  • 举报
回复
现给出32位Linux下的NSL参数,希望大家给出更多建议!
1 NLS_LANGUAGE AMERICAN
2 NLS_TERRITORY AMERICA
3 NLS_CURRENCY $
4 NLS_ISO_CURRENCY AMERICA
5 NLS_NUMERIC_CHARACTERS .,
6 NLS_CHARACTERSET AL32UTF8
7 NLS_CALENDAR GREGORIAN
8 NLS_DATE_FORMAT DD-MON-RR
9 NLS_DATE_LANGUAGE AMERICAN
10 NLS_SORT BINARY
11 NLS_TIME_FORMAT HH.MI.SSXFF AM
12 NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
13 NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
14 NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
15 NLS_DUAL_CURRENCY $
16 NLS_COMP BINARY
17 NLS_LENGTH_SEMANTICS BYTE
18 NLS_NCHAR_CONV_EXCP FALSE
19 NLS_NCHAR_CHARACTERSET AL16UTF16
20 NLS_RDBMS_VERSION 11.1.0.6.0
langcai1981 2009-05-19
  • 打赏
  • 举报
回复
其实数据库装在32位Linux上也出现了同样的问题!
superhsj 2009-05-19
  • 打赏
  • 举报
回复
需不需要在linux下安装字库?
oraclelogan 2009-05-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 vc555 的回复:]
nls_lang值
[/Quote]

看看数据库的字符集是什么?
pathuang68 2009-05-19
  • 打赏
  • 举报
回复
对。看看你的数据库的字符集设置。
vc555 2009-05-19
  • 打赏
  • 举报
回复
nls_lang值
superhsj 2009-05-19
  • 打赏
  • 举报
回复
友情帮顶,牛人们给点建议啊
money8899 2009-05-19
  • 打赏
  • 举报
回复
没遇到

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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