字元集總結2

來源:互聯網
上載者:User


查當前資料庫字元集
BYS@bys1>select userenv('language') from dual;

USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.AL32UTF8
BYS@bys1>select * from nls_database_parameters;

PARAMETER                      VALUE
------------------------------ --------------------
NLS_LANGUAGE                   AMERICAN
NLS_TERRITORY                  AMERICA
NLS_CURRENCY                   $
NLS_ISO_CURRENCY               AMERICA
NLS_NUMERIC_CHARACTERS         .,
NLS_CHARACTERSET               AL32UTF8
NLS_CALENDAR                   GREGORIAN
NLS_DATE_FORMAT                DD-MON-RR
NLS_DATE_LANGUAGE              AMERICAN
NLS_SORT                       BINARY
NLS_TIME_FORMAT                HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT           DD-MON-RR HH.MI.SSXF
                               F AM

NLS_TIME_TZ_FORMAT             HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT        DD-MON-RR HH.MI.SSXF
                               F AM TZR

NLS_DUAL_CURRENCY              $
NLS_COMP                       BINARY
NLS_LENGTH_SEMANTICS           BYTE
NLS_NCHAR_CONV_EXCP            FALSE
NLS_NCHAR_CHARACTERSET         UTF8
NLS_RDBMS_VERSION              11.2.0.1.0


[oracle@bys001 ~]$ export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
[oracle@bys001 ~]$ echo $NLS_LANG
AMERICAN_AMERICA.ZHS16GBK

顯示字元使用的是作業系統的字元集,比如在中文WIN下,使用SSH登陸英文LINUX,
然後再用    SQLPLUS登陸到資料庫進行查詢,如果查詢結果有漢字,則可以顯示。
如果直接登陸英文LINUX,用 SQLPLUS登陸到資料庫進行查詢,是不能正常顯示漢字的。

用戶端字元集的設定是為了讓資料庫知道我們傳遞過去的字元是屬於哪種字元集,
以便於ORACLE在儲存字元時做相應的編碼映射。


其實亂碼,說到底就是用於顯示字元的作業系統沒有在字元編碼中找到對應的字元導致的,造成這種現象的主要原因就是:
1:輸入操作的os字元編碼和查詢的os字元編碼不一致導致出現亂碼。
2:輸入操作的用戶端字元集(nls_lang)和查詢用戶端字元集(nls_lang)不同,也可能導致查詢返回亂碼或者錯誤的字元。

還有一個問題需要解釋一下:
在上面的例子中,相同的字元在不同的字元集中對應著不同的字元編碼,這個通常稱為字元集不相容或者不完全相容,比如zhs16gbk和al32utf8,他們儲存的ascii碼的字元編碼都是相同的,但對於漢字卻是不同的。
如果兩個字元集對於相同的字元採用的相同的字元編碼,我們稱之為字元相容,範圍大的叫做範圍小的字元集的超級。我們通常遇到的zhs16cgb231280,zhs16gbk就是這樣的情況,後者是前者的超級。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.