我们在ORACLE数据库中常见的两种字符集:AL32UTF8/ZHS16GBK
什么是字符集:
在计算机语言中每个国家对于自己国家语言的二进制代码设计是不一样的,例如:
zhs16gbk 简体中文字符集 :中 01010 国 01100 0
utf8 A 010 B 100 C 110 ABC 0
0 ABC
乱码
DBA在建库之间 数据库叫什么 用什么字符集
查询操作系统字符集:
locale ( unix or linux)
chcp (windows)
查询数据库所支持的数据库字符集:
select * from v$nls_valid_values where parameter='CHARACTERSET';
数据库服务器字符集select * from nls_database_parameters where parameter like '%CHARACTERSET%'; 其来源于props$,是表示数据库的字符集。
客户端字符集环境 select * from v$nls_parameters where parameter in ( 'NLS_LANGUAGE','NLS_TERRITORY','NLS_CHARACTERSET'); --查看客户端字符集
表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表
影响Oracle数据库字符集最重要的参数是NLS_LANG参数。
它的格式如下: NLS_LANG = language_territory.charset
它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。
其中:
Language: 指定服务器消息的语言, 影响提示信息是中文还是英文
Territory: 指定服务器的日期和数字格式
Charset: 指定字符集。
如:AMERICAN _ AMERICA. ZHS16GBK
从NLS_LANG的组成我们可以看出,真正影响数据库字符集的其实是第三部分。
set NLS_LANG=AMERICAN_CHINA.ZHS16GBK
set NLS_LANG=Simplified Chinese_china.ZHS16GBK
SQL> select * from nls_database_parameters where parameter like '%CHARACTERSET%';--当前数据库使用的字符集
ALTER SESSION SET NLS_LANGUAGE= 'SIMPLIFIED CHINESE' NLS_TERRITORY= 'CHINA' NLS_NUMERIC_CHARACTERS='AL32UTF8';
alter session set NLS_NUMERIC_CHARACTERS= '.,';
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
set NLS_LANG=AMERICAN_AMERICA.ZHS16CGB
set NLS_LANG=AMERICAN_AMERICA.US7ASCII
set NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16CGB"
set NLS_LANG=AMERICAN_AMERICA.AL32UTF8
查询 oracle client 端的字符集:
在 windows 平台下,就是注册表里面相应 OracleHome 的 NLS_LANG。还可
以在 dos 窗口里面自己设置,
比如: set nls_lang=AMERICAN_AMERICA.ZHS16GBK
这样就只影响这个窗口里面的环境变量。
在 unix 平台下,就是环境变量 NLS_LANG。
$echo $NLS_LANG
AMERICAN_AMERICA.ZHS16GBK
如果检查的结果发现 server 端与 client 端字符集不一致,请统一修改为同
server 端相同的字符集。
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/sjkxydsj/53002.html