<p>我们在ORACLE数据库中常见的两种字符集:AL32UTF8/ZHS16GBK</p>
讯享网
什么是字符集:
在计算机语言中每个国家对于自己国家语言的二进制代码设计是不一样的,例如:
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';</p> <p><br /> 数据库服务器字符集select * from nls_database_parameters where parameter like '%CHARACTERSET%'; 其来源于props\),是表示数据库的字符集。
客户端字符集环境 select * from v\(nls_parameters where parameter in ( 'NLS_LANGUAGE','NLS_TERRITORY','NLS_CHARACTERSET'); --查看客户端字符集<br /> </p> <p>表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表</p> <p>会话字符集环境 select * from nls_session_parameters; ,其来源于v\)nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameters一致。
影响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
echo \(NLS_LANG\) 查看当前的操作系统的环境变量的字符集设置
SQL> select * from nls_database_parameters where parameter like ‘%CHARACTERSET%’;–当前数据库使用的字符集
select * from v\(nls_parameters where parameter in ( 'NLS_LANGUAGE','NLS_TERRITORY','NLS_CHARACTERSET'); --查看客户端字符集</p> <p>ALTER SESSION SET NLS_LANGUAGE= 'SIMPLIFIED CHINESE' NLS_TERRITORY= 'CHINA' NLS_NUMERIC_CHARACTERS='AL32UTF8';</p> <p>alter session set NLS_NUMERIC_CHARACTERS= '.,';</p> <p></p> <p><br /> set NLS_LANG=AMERICAN_AMERICA.AL32UTF8 windows上设置 set NLS_LANG=AMERICAN_AMERICA.ZHS16CGB</p> <p><br /> select id,name,dump(name,1016) from t;</p> <p>export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK</p> <p>export NLS_LANG=AMERICAN_AMERICA.AL32UTF8</p> <p>set NLS_LANG=AMERICAN_AMERICA.ZHS16CGB</p> <p>set NLS_LANG=AMERICAN_AMERICA.US7ASCII</p> <p>set NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16CGB"</p> <p>set NLS_LANG=AMERICAN_AMERICA.AL32UTF8</p> <p>set nls_lang=Simplified Chinese_China.AL32UTF8<br /> #</p> <p>如果想正确导出源数据库数据,则 Export 过程中用户会话字符集应等于源<br /> 数据库字符集或是源数据库字符集的超集</p> <p>查询 oracle client 端的字符集:<br /> 在 windows 平台下,就是注册表里面相应 OracleHome 的 NLS_LANG。还可<br /> 以在 dos 窗口里面自己设置,<br /> 比如: set nls_lang=AMERICAN_AMERICA.ZHS16GBK<br /> 这样就只影响这个窗口里面的环境变量。</p> <p>在 unix 平台下,就是环境变量 NLS_LANG。<br /> \)echo $NLS_LANG
AMERICAN_AMERICA.ZHS16GBK
如果检查的结果发现 server 端与 client 端字符集不一致,请统一修改为同
server 端相同的字符集。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/169346.html