ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 乱码问题

乱码问题

原创 Linux操作系统 作者:guocun09 时间:2011-11-15 10:57:05 0 删除 编辑

異常:開發人員告知切換新系統上線后中文出現亂碼

 

處理:

1.本地toad連接新系統DB

select和insert發現都不會出現亂碼

 

2.查看新舊系統DB oracle字符集全部一樣,排除數據庫字符集設置問題

select * from gv$nls_parameters

where parameter in('NLS_LANGUAGE','NLS_TERRITORY','NLS_CHARACTERSET');

NLS_CHARACTERSET都是AL32UTF8

 

3.排除了DB問題,檢查web server(user client通過web server對DB進行操作)

通知系統管理員檢查web server發現新web server OS(WIN2003)控制面板->地區及語言為英文(美國),而舊系統是中文(臺灣),將新系統改回中文(臺灣),重啟server發現問題依舊。

 

4.檢查web server中oracle client的NLS_LANG設置

新web server NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252

舊web server NLS_LANG=TRADITIONAL CHINESE_TAIWAN.ZHT16MSWIN950

 

 

 

 

一个误区:看到很多人在出现乱码的时候都首先要做的就是将客户端字符集设置和数据库一致,其实这是没有太多根据的。设想一下,假如数据库字符集是AL32UTF8,里面存储这一些中文字符,而我的客户端操作系统是英文的,此时我将客户端的NLS_LANG设置成AL32UTF8,这样会解决问题吗?这样客户端就能显示中文了吗?客户端就能输入中文了吗?现在客户端是英文的,它的字符集里根本就没有汉字的编码,我们简单的修改一下客户端的字符集又有什么用?前面已经讨论了,这个设置无非就是告诉ORACLE我将以什么样的字符集与数据库进行数据交换,对于解决乱码问题毫无关系。

 正确的做法是将客户端的操作系统改成支持中文字符,并将客户端字符集改成和操作系统一致的字符集,这样才能真正的解决问题。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25583515/viewspace-710945/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: ORA-04030
请登录后发表评论 登录
全部评论
DBA,掌握Oracle,SQLServer,MySQL,hadoop,casscandra等数据库。喜爱深入研究数据库技术原理,擅长管理和优化工作。

注册时间:2011-10-02

  • 博文量
    177
  • 访问量
    686671