ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 设置NLS_LANG参数

设置NLS_LANG参数

原创 Linux操作系统 作者:myownstars 时间:2012-02-23 15:15:55 0 删除 编辑

 

NLS_LANG

设置客户端字符集,格式:_.

注:前两个参数与characterset并无直接关联 ,如JAPANESE_JAPAN.WE8MSWIN1252实际并不允许存储日文

Character并不改变客户端的字符集,只是让ORACLE知道客户端在用什么字符集以便进行字符转换

如果客户端NLS_LANG设置的字符集同数据库(NLS_CHARACTERSET)的一样,那么在数据交互的时候将不尝试字符转换,由此可能会造成乱码。

 

设置NLS_LANG

UNIX

只需在命令行设置NLS_LANG变量即可

 

WINDOWS

Oracle安装时默认会在注册表中设置,10g的路径如下HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_

也可在DOS命令行使用set NLS_LANG=,会覆盖注册表中的值

查看NLS_LANG

SQL> host echo %NLS_LANG%

返回当前环境中设置值,如果没有结果,则查看注册表中的值

SQL> @.[%NLS_LANG%].

若注册表已设置该变量,则返回unable to open file ".[ENGLISH_UNITED KINGDOM.WE8MSWIN1252].";反之则unable to open file ".[%NLS_LANG%]."

注:the @.[%NLS_LANG%]. "trick" reports the NLS_LANG known by the sqlplus executable, it will not read the registry itself. But then you are not sure if the variable is set in the environment or in the registry. That's the reason of checking with the host command first

 

 

查看数据库使用的字符集

select value from NLS_DATABASE_PARAMETERS where parameter='NLS_CHARACTERSET';

 

使用dblink时,对于char/varchar2/long/clob类型,将由源库的nls_characterset向目标库的nls_characterset转换;nchar/nvarchar2/nclob则使用nls_nchar_characterset参数转换;两种情形下都不会用到

NLS_LANG参数。

 

唯一能够兼容所有字符的nls_charactersetUTF8/AL32UTF8

 

 

乱码问题

当查询数据显示乱码时,有三种可能:

1 插入数据时环境变量设置有问题

2 数据库端字符集不支持插入的字符

3 查询时的环境变量设置问题

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15480802/viewspace-717021/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-03-18

  • 博文量
    375
  • 访问量
    3053066