Oracle 字符集与编码详解

1 概述

概念
字符集:把某些字符收集到一处,并赋以名称
编码:字符的 '身份证号码',让计算机以存储编码的方式存储字符

2 字符集

字符集参数1:语言参数2:字符位数参数3:编码格式
AL32UTF8AL:支持所有语言(All Language)32:每个字符最多占用 32 位(4 字节)UTF-8
US7ASCIIUS:美国(United States)7:每个字符占 7 位ASCII
……
字符集描述
char固定长度,不足补空格,最大2000 字节
varchar可变长度,最大 4000 字节数
nvarchar
nvarchar2可变长度,最大 4000 字符数
nvarchar2

以上,Oracle 推荐使用 varchar2(n)
计算字符长度:length(字符)
计算字节长度:lengthb(字节)

3 编码

3.1 服务端编码

-- 方式1:直接查询
select t.parameter,
       t.value -- AL32UTF8、ZHS16GBK 等
  from nls_database_parameters t
 where parameter = 'NLS_CHARACTERSET';

-- 方式2:带注释
select t.name,
       t.value$,
       t.comment$
  from sys.props$ t
 where t.name = 'NLS_CHARACTERSET';

-- 方式3:上下文环境
select userenv('language') from dual; 

-- 补充
'NLS_CHARACTERSET': 字符集,如:char、varchar2、long、clob
'NLS_NCHAR_CHARACTERSET': 国家字符集,如:nchar、nvarchar2、nclob
UTF-8 字节长度:lengthb('a') = 1, lengthb('我') = 3
GBK   字节长度:lengthb('a') = 1, lengthb('我') = 2

查询截图:
在这里插入图片描述

3.2 客户端编码

select t.parameter, 
       t.value 
  from nls_instance_parameters t 
 where t.parameter='NLS_LANGUAGE';

版权声明:本文为qq_34745941原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。