Chinaunix首页 | 论坛 | 博客
  • 博客访问: 82374
  • 博文数量: 38
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 360
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-11 14:02
文章分类
文章存档

2017年(38)

我的朋友

分类: Oracle

2017-12-07 13:48:12

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

 

處理:

1.本地toad連接新系統DB

selectinsert發現都不會出現亂碼

 

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 serverDB進行操作)

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

 

4.檢查web serveroracle clientNLS_LANG設置

web server NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252

web server NLS_LANG=TRADITIONAL CHINESE_TAIWAN.ZHT16MSWIN950

 

 

 

 

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

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

阅读(1081) | 评论(0) | 转发(0) |
0

上一篇:sga_target与sga_max_size

下一篇:ORA-04030

给主人留下些什么吧!~~