javayestome 发表于 2013-2-1 11:45:25

字符集问题的初步探讨(六)-----乱码的产生


原文链接:

http://www.eygle.com/special/NLS_CHARACTER_SET_06.htm


原文发表于itpub技术丛书《Oracle数据库DBA专题技术精粹》,未经许可,严禁转载本文.
最后我们来讨论一下乱码的产生。

通常在我们的现实环境中,存在3个字符集设置。
第一: 客户端应用字符集(Client Application Character Set)
第二: 客户端NLS_LANG参数设置
第三: 服务器端,数据库字符集(Character Set)设置

我们说,一个字符在客户端应用(比如SQLPLUS,CMD,NOTEPAD等)中以怎样的字符显示取决于客户端操作系统,客户端能够显示怎样的字符,
我们就可以在应用中录入这些字符,至于这些字符能否在数据库中正常存储,就和另外的两个字符集设置紧密相关了。
在传输过程中,客户端NLS_LANG主要用于进行转换判断
如果NLS_LANG等于数据库字符集,则不进行任何转换直接把字符插入数据库
如果不同则进行转换,转换主要有两个任务


[*]如果存在对应关系,则把相应二进制编码经过映射后(这一步映射以后,所代表的字符可能发生转换)传递给数据库
[*]如果不存在对应关系,则传递一个替换字符(很多平台就是?)
页: [1]
查看完整版本: 字符集问题的初步探讨(六)-----乱码的产生