日期:2014-05-16 浏览次数:20507 次
????? 计算机只能识别0和1,对于人类社会复杂的文字无法直接识别,需要通过对字符编码,给每个字符设定一个二进制编码。
????? 字符编码方式主要分为以下两种:
?????
????? 1. 单字节编码?????????
a. 最早的编码为US7ASII,采用1个字节中的7位来编码,共有128中组合,以满足美国的语言,但这种编码支持的字 符数太少;
b. 随之出现了8位的编码方案,共有256种组合,如WE8ISO8859P1,满足了西欧国家的需求,但亚洲国家文字较为复杂,该编码方案仍旧无法满足,需要更大的编码空间,于是多字节编码出现了
?
??????2. 多字节编码
a. 定长多字节,采用固定字节长度来保存字符编码,如AF16UTF16
???
b. 变长多字节,采用变字节长度来保持字符编码,如ZHS16GBK,ZHS16CGB231280,AL32UTF8
?
多个字节的编码空间能满足所有文字的需求,使各种语言国家都能使用计算机
?
????? 从ORACLE的角度也可分为两种:
?
????? 1. 数据库服务器字符集
服务器端分为数据库字符集和国家字符集,在建库时确定,一般运行时不要修改字符集,虽然可以通过如下语句修改
?
alter database character set '新字符集名称';
?
可以通过以下几个视图和表来查看服务器的字符集
nls_database_parameters
props$
v$nls_parameters
?
??????2. 客户端字符集
客户端字符集在ORACLE中指NLS_LANG的设置,但客户端真正的字符编码方案要看系统环境而定,可以在CMD中输入 chcp 来查看系统的字符编码,这里谈谈NLS_LANG的作用
?
NLS_LANG的作用主要在于通知ORACLE服务器,在客户端使用的字符编码,默认与操作系统环境的编码一致,也可以手动进行修改,当修改后的编码与服务器的编码非超集关系时,在SQLPLUS中显示查询结果、EXP/IMP等情况下将发生字符集转换,若转化不成功即出现乱码。
?
?
有任何问题可以加入我们的ORACLE群:84549521
共同学习,共同进步!?