https://zhuanlan.zhihu.com/p/668340691#
在Oracle中unicode字符集中,存在以下几种不同unicode字符集的编码模式
- AL32UTF8
- UTF8
- AL16UTF16
- UTF-16BE
- UTF-16LE
下面讲一下它们的在Oracle一般都用在哪里以及有哪些限制?
字符编码方式 | 描述 |
---|---|
AL32UTF8(重点) | 1、该字符编码模式是对UTF-8标准的实现,其为变长字符宽度,1~4个字节,包含了unicode字符集中补充字符(4字节); 2、通常在CREATE DATABASE时指定参数CHARACTER SET AL32UTF8作为该数据库字符集,该设定会将该数据库中char、varchar2、clob数据类型字段存储的字符编码为AL32UTF8。 3、兼容ASCII字符集,都是用1字节表示。 |
UTF8(已弃用) | Oracle中该字符编码模式已被弃用。该字符编码并不是对UTF-8的标准实现,而是CESU-8的实现,其为变长字符宽度,字符宽度1~3个字节,不包含unicode字符集中的4字节补充字符。 |
AL16UTF16(重点) | 1、该字符编码是用UTF-16BE(大端存储)存储模式实现标准的UTF-16,每个字符占用2或4字节存储,包含了unicode字符集中的补充字符(4字节); 2、该编码模式主要是用于CREATE DATABASE时指定参数 NATIONAL CHARACTER SET(国家字符集)AL16UTF16,该设定会将该数据库中nchar、nvarchar2、nclob数据类型字段的字符编码为AL16UTF16。 3、该字符集不能作为数据库字符集,也就是说CREATE DATABASE时指定参数CHARACTER SET AL16UTF16不支持。 4、不兼容ASCII字符集,用2字节表示ASCII中的字符。 |
UTF-16BE(了解) | AL16UTF16的具体编码模式实现,即大端存储方式。不直接在Oracle中使用。 |
UTF-16LE(了解) | UTF16小端编码模式实现,它是一个仅用于转换的字符编码模式,仅在SQL CONVERT或PL/SQL UTL_I18N.STRING_TO_RAW等字符集转换函数中有效。不直接在Oracle中使用。 |