Bes*_*ces 6 oracle character-set
我希望我的 Oracle 数据库能够正确存储所有可能的 UTF8 字符。如果 NLS_CHARSET 设置为 AL32UTF8 就是我需要做的全部吗?或者我是否还需要确保使用 NCHAR 和 NVARCHAR 而不是 CHAR 和 VARCHAR 来正确存储 UTf8 字符?
Phi*_*lᵀᴹ 11
好问题。我会给出一个简单的答案。
Oracle 通过不同的数据类型和参数同时支持两个字符集。“正常”数据库范围的字符集和“国家”字符集。
现在,“正常”字符集会影响VARCHAR2
,CHAR
和CLOB
数据的存储方式。“国家”字符集影响NVARCHAR2
,NCHAR
和NCLOB
数据的存储方式。
这些是在数据库创建时指定的。例如:
CREATE DATABASE ....
CHARACTER SET AL32UTF8
NATIONAL CHARACTER SET AL16UTF16
..... BLAH;
Run Code Online (Sandbox Code Playgroud)
您可以通过检查您的数据库来查看这些。例如:
SQL> select * from nls_database_parameters where parameter like '%CHARACTERSET';
PARAMETER VALUE
------------------------------ ----------------------------------------
NLS_CHARACTERSET WE8MSWIN1252
NLS_NCHAR_CHARACTERSET AL16UTF16
SQL>
Run Code Online (Sandbox Code Playgroud)
NLS_CHARACTERSET
用于CHAR
/ VARCHAR2
,NLS_NCHAR_CHARACTERSET
用于NCHAR
/ NVARCHAR2
。
如果您的正常字符集是 UTF%,N%
除非您有一些奇怪的国际化要求,否则您通常可以安全地远离数据类型。如果是这样,请随时编辑您的问题!
归档时间: |
|
查看次数: |
10104 次 |
最近记录: |