Chanel [K]

面朝大海,春暖花开

关于字符集的几句话

with 7 comments

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

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

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

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

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

Written by kamus

November 1st, 2007 at 6:17 pm

Posted in Oracle RDBMS

Tagged with

7 Responses to '关于字符集的几句话'

Subscribe to comments with RSS or TrackBack to '关于字符集的几句话'.

  1. 精辟啊

    玉面飞龙

    2 Nov 07 at 11:02 am

  2. 不错,4语中的!

    edeed

    2 Nov 07 at 4:44 pm

  3. 每个字我都认识,但整篇文章我就是看不懂:(

    kamus能不能再写得通俗点?

    5415

    3 Nov 07 at 12:55 am

  4. @5哥
    实在是没办法了,对于技术文章还是写不成像5哥你那篇Linux介绍样的通俗易懂。

    kamus

    5 Nov 07 at 11:01 am

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

    5415

    6 Nov 07 at 9:14 pm

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

  7. @kissingwolf
    这一点是没错的,其实也就是环境变量的设定问题,单独设定的环境变量将会覆盖默认的环境变量

    kamus

    2 Dec 07 at 1:03 am

Leave a Reply