1. 程式人生 > >ORACLE資料庫NLS_CHARACTERSET和NLS_NCHAR_CHARACTERSET區別

ORACLE資料庫NLS_CHARACTERSET和NLS_NCHAR_CHARACTERSET區別

使用Select * from nls_database_parameter去檢視的字符集,發現查到兩個字符集,NLS_CHARACTERSET 和NLS_NCHAR_CHARACTERSET。如下:

SQL> select * from nls_database_parameters;

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

PARAMETER                      VALUE ------------------------------ -------------------- 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

PARAMETER                      VALUE ------------------------------ -------------------- NLS_NCHAR_CHARACTERSET         AL16UTF16 NLS_RDBMS_VERSION              10.2.0.1.0

已選擇20行。

網上查閱了一下,得到以下的結果:

NLS_CHARACTERSET是資料庫字符集,NLS_NCHAR_CHARACTERSET是國家字符集 ORACLE中有兩大類字元型資料,VARCHAR2是按照資料庫字符集來儲存資料。而NVARCHAR2是按照國家字符集儲存資料的。同樣,CHAR和NCHAR也一樣,一是資料庫字元符,一是國家字符集。 字符集不同,二進位制碼的組合就不同。 比如有一串二進位制資訊:1101,0110,1101,0000,1011,1001,1111,1010,按照16位雙位元組GBK字符集理解,可以代表“中國”兩個字。如果單位元組的字符集,這一串二進位制代表ASC碼為214、208、185、250的四個怪字元。 這就是字符集的作用,就是以什麼樣的形式理解資訊。

--------------------- 本文來自 zhouyong0 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/zhouyong0/article/details/8111139?utm_source=copy