【體繫結構,13】oracle的字元集詳解

來源:互聯網
上載者:User

標籤:oracle11g

一.字元集的簡單理解:字元集: 字元與編碼對應的表。 當軟體有字元集,就是使用自己的字元集,如果軟體沒有字元集就使用OS字元集。
二.字元集的使用場合:1.oracle有兩種字元集:資料庫字元集和國家字元集 。當安裝資料庫時選擇了這兩種字元集。                 資料庫字元集 的使用場合:(1)用來儲存CHAR, VARCHAR2, CLOB, LONG等類型資料(2)用來標示諸如表名、列名以及PL/SQL變數等(3)用來儲存SQL和PL/SQL程式單元等      國家字元集的使用場合:(1)用以儲存NCHAR, NVARCHAR2, NCLOB等類型資料



2.查看資料庫的字元集:
SQL> select * from nls_database_parameters;
PARAMETER                      VALUE------------------------------ ----------------------------------------NLS_LANGUAGE                   AMERICANNLS_TERRITORY                  AMERICANLS_CURRENCY                   $NLS_ISO_CURRENCY               AMERICANLS_NUMERIC_CHARACTERS         .,NLS_CHARACTERSET               WE8ISO8859P1     --資料庫字元集NLS_CALENDAR                   GREGORIANNLS_DATE_FORMAT                DD-MON-RRNLS_DATE_LANGUAGE              AMERICANNLS_SORT                       BINARYNLS_TIME_FORMAT                HH.MI.SSXFF AM
PARAMETER                      VALUE------------------------------ ----------------------------------------NLS_TIMESTAMP_FORMAT           DD-MON-RR HH.MI.SSXFF AMNLS_TIME_TZ_FORMAT             HH.MI.SSXFF AM TZRNLS_TIMESTAMP_TZ_FORMAT        DD-MON-RR HH.MI.SSXFF AM TZRNLS_DUAL_CURRENCY              $NLS_COMP                       BINARYNLS_LENGTH_SEMANTICS           BYTENLS_NCHAR_CONV_EXCP            FALSENLS_NCHAR_CHARACTERSET         AL16UTF16    --國家字元集NLS_RDBMS_VERSION              10.2.0.1.0
20 rows selected.
三.字元集的命名:
Oracle的字元集命名遵循以下命名規則:<Language><bit size><encoding>即:  <語言><位元位元><編碼>比如: ZHS16GBK表示採用GBK編碼格式、16位(兩個位元組)簡體中文字元集常見字元集:US7ASCII          美國人常用的字元zhs16cgb231280     較老的中文字元集, 只針對中國人使用。AL32UTF8       是unicode最新字元集,比utf8字元集要多。一般選為資料庫字元集。AF16UTF16    國家字元集統一選AF16UTF16ZHS16GBK    較新的中文字元集, ZHS16GBK是zhs16cgb231280字元集的超集,但不是嚴格超集。utf8
2.查看oracle所有字元集
select * from V$NLS_VALID_VALUES;
3.查看OS的字元集: linux: locale,locale -a windows: chcp
四.用戶端OS字元集、NLS_LANG設定、伺服器端OS字元集、Oracle資料庫字元集:
1.用戶端軟體sqlplus沒有字元集, 使用的是作業系統的字元集。2.如果軟體有字元集,則作業系統字元集失效。所以oracle不會用作業系統的字元集。3.所有的字元集轉換都是在oracle端轉換的。4.主要流程:使用sqlplus輸入中文,使用作業系統字元集對中文進行編碼。然後傳到oracle。當oracle的字元集與用戶端的字元集不一致時,oracle要將編碼轉成字元,然後使用資料庫的字元集將字元重新編碼再儲存起來。5.oracle如何知道用戶端的字元集:oracle通過NLS_LANG參數知道用戶端的字元集。在用戶端設定NLS_LANG參數.設定用戶端的字元集:set NLS_LANG=american_america.zhs16gbk
6.如何設定字元集:
①.用戶端作業系統的字元集: 中文, UTF8.②.oracle字元集: 一般在建立資料庫時指定。③.用戶端NLS_LANG參數設定: 一定要與用戶端作業系統的字元集一致。
五.NLS_LANG的設定:一定要與用戶端作業系統的字元集一致1.設定格式:NLS_LANG=<language>_<territory>.<client character set>     Language:顯示oracle訊息,校正,日期命名    Territory:指定預設日期、數字、貨幣等格式    Client character set:指定用戶端將使用的字元集    例如:NLS_LANG=AMERICAN_AMERICA.US7ASCII      AMERICAN是語言,AMERICA是地區,US7ASCII是用戶端字元集


六.執行個體:查看資料的字元編碼# dump(name,1016):表示將name這一列以16進位直接顯示出來,10表示查詢結果中顯示CharacterSet。  select id, name , dump(name,1016) from t2;  #查看你好的字元編碼SQL> select dump(‘你好‘,1016) from dual;DUMP(‘你好‘,1016)-----------------------------------------------Typ=96 Len=4 CharacterSet=ZHS16GBK: c4,e3,ba,c3
#SQL> select dump(‘你好‘,16) from dual;
DUMP(‘你好‘,16)-------------------------Typ=96 Len=4: c4,e3,ba,c3


【體繫結構,13】oracle的字元集詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.