关于字符集的几句话
1. 输入时,如果Oracle客户端字符集跟Oracle服务器端字符集设置不一样,那么输入的字符就会做字符转换,最终以服务器端的字符集存入数据库
2. 输入时,如果Oracle客户端字符集跟Oracle服务器端字符集设置一样,那么不会有任何字符转换,最终以客户端操作系统字符集(不是Oracle客户端字符集)存入数据库
3. 输出时,如果Oracle客户端字符集跟Oracle服务器端字符集设置不一样,那么输出的字符会做字符转换,如果客户端操作系统字符集能够正确解释,那么输出显示正确,否则乱码
4. 输出时,如果Oracle客户端字符集跟Oracle服务器端字符集设置一样,那么不会有任何字符转换,如果客户端操作系统字符集能够正确解释,那么输出显示正确,否则乱码
这就是为什么我们即使设置了数据库字符集是US7ASCII这样无法保存双字节的英文字符集,只要Oracle客户端也是US7ASCII,客户端的操作系统又是中文操作系统,那么仍然可以正确地存储并且显示中文的原因。
![Chanel [K]](http://www.dbform.com/wp-content/chanelk.png)
精辟啊
玉面飞龙
2 Nov 07 at 11:02 am
不错,4语中的!
edeed
2 Nov 07 at 4:44 pm
每个字我都认识,但整篇文章我就是看不懂:(
kamus能不能再写得通俗点?
5415
3 Nov 07 at 12:55 am
@5哥
实在是没办法了,对于技术文章还是写不成像5哥你那篇Linux介绍样的通俗易懂。
kamus
5 Nov 07 at 11:01 am
呵呵,我现在回头看前几年的文章会觉得脸红,其实写得不好,当时还自以为是以为自己写得很棒。
5415
6 Nov 07 at 9:14 pm
需要认识到并不完全是指操作系统的字符集,在Unix和类Unix中启动oracle 实例的时候是根据启动环境的字符集设置的。比如你的linux是zh_CN.UTF-8 ,你启动oracle的脚本是oracle_start.sh , 在oracle_start.sh中头部你定义了 LANG=”zh_CN.GB2312″,SUPPORTED=”zh_CN.GB2312:zh_CN:zh” , LANG ,那么在oracle的运行环境中字符集就是zh_CN.GB2312的! 其他程序可以就此推广,这也是系统大环境和程序运行小环境区别!因为其运行在独立的shell环境中!
kissingwolf
26 Nov 07 at 12:17 pm
@kissingwolf
这一点是没错的,其实也就是环境变量的设定问题,单独设定的环境变量将会覆盖默认的环境变量
kamus
2 Dec 07 at 1:03 am