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

你可能感兴趣的:(java,oracle,字符集)