详解Oracle中NLS_LANG变量的使用(关于oracle客户端中文乱码的问题)

    操作系统环境变量针对语言项设置有几个,我经常设置的是这两个LANG和NLS_LANG。LANG是针对Linux系统的语言、地区、字符集的设置,对linux下的应用程序有效,如date;NLS_LANG是针对Oracle语言、地区、字符集的设置,对oracle中的工具有效
    NLS_LANG是一个环境变量,用于定义语言,地域以及字符集属性。对于非英语的字符集,NLS_LANG的设置就非常重要。
    NLS:‘National Language Support (NLS)’ 当我们设定一种nls的时候实际上我们是为oracle在存放数据时指定了他的语种所特有的一些表达形式,比如我们选择chinese,那么它的中文字符如何存放,按什么规则排序,货币如何表示,日期格式也就被设定了。
NLS_LANG参数由以下部分组成:NLS_LANG=_. NLS_Language 指定: - Oracle(错误)信息的语言 - 日和月份的名称 注意:NLS_LANGUAGE与插入和查询的*数据*的语言无关。
    NLS_Territory 指定: - 货币和数字格式 - 计算星期和天数的范围和惯例
    客户端字符集(CLIENTS CHARACTERSET): - 定义Oracle客户端,客户应用使用的编码 * 或者它要符合您Microsoft Windows代码页 (GUI工具的ACP, 命令提示符的CHCP 值) * 或者为Unicode WIN32应用设置为UTF8/AL32UTF8。
    DB中的NLS_LANG DB也有自己的NLS_LANG参数,来标识数据库的语言,地域,字符集。可以通过以下的SQL来查得, SELECT * FROM v$nls_parameters;  OR SELECT USERENV ('language') FROM DUAL;


linux下如果希望以中文显示则修改为 
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK" 
或
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
注意:由于台湾的问题 在国内使用
export设置时要加双引号

你可能感兴趣的:(oracle,oracle中文乱码)