关于字符集的几句话

1. 输入时,如果Oracle客户端字符集跟Oracle服务器端字符集设置不一样,那么输入的字符就会做字符转换,最终以服务器端的字符集存入数据库

2. 输入时,如果Oracle客户端字符集跟Oracle服务器端字符集设置一样,那么不会有任何字符转换,最终以客户端操作系统字符集(不是Oracle客户端字符集)存入数据库

3. 输出时,如果Oracle客户端字符集跟Oracle服务器端字符集设置不一样,那么输出的字符会做字符转换,如果客户端操作系统字符集能够正确解释,那么输出显示正确,否则乱码

4. 输出时,如果Oracle客户端字符集跟Oracle服务器端字符集设置一样,那么不会有任何字符转换,如果客户端操作系统字符集能够正确解释,那么输出显示正确,否则乱码

这就是为什么我们即使设置了数据库字符集是US7ASCII这样无法保存双字节的英文字符集,只要Oracle客户端也是US7ASCII,客户端的操作系统又是中文操作系统,那么仍然可以正确地存储并且显示中文的原因。

7 thoughts on “关于字符集的几句话

  1. 呵呵,我现在回头看前几年的文章会觉得脸红,其实写得不好,当时还自以为是以为自己写得很棒。

  2. 需要认识到并不完全是指操作系统的字符集,在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环境中!

Leave a Reply

Your email address will not be published. Required fields are marked *