標籤: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的字元集詳解