我无法弄清楚Oracle的生命加密语法。这是Oracle 10g
我的会话的NLS_LANGUAGE目前默认为AMERICAN。 我需要能够显示UTF8字符。
以下是我的一些尝试,都不正确:
ALTER SESSION SET NLS_LANGUAGE='UTF8'
ALTER SESSION SET NLS_LANGUAGE='AMERICAN_AMERICA.UTF8'
什么是秘密命令?
答案 0 :(得分:13)
字符集是语言环境的一部分,由NLS_LANG
的值决定。作为the documentation makes clear,这是操作系统变量:
NLS_LANG
被设置为环境 UNIX平台上的变量。NLS_LANG
在Windows上的注册表中设置 平台。
现在我们可以使用ALTER SESSION
更改几个语言环境元素的值,NLS_LANGUAGE和NLS_TERRITORY。但不是,唉,字符集。这种差异的原因是 - 我认为 - 语言和领域只会影响Oracle如何解释存储的数据,例如:显示大数字时是否显示逗号或句点。字符集的轮廓与客户端应用程序如何呈现显示的数据有关。此信息在启动时由客户端应用程序选取,不能从内部更改。
答案 1 :(得分:9)
好的,按http://www.oracle.com/technology/tech/globalization/htdocs/nls_lang%20faq.htm:
ALTER无法更改NLS_LANG 会话,NLS_LANGUAGE和 NLS_TERRITORY可以。然而 NLS_LANGUAGE和/或NLS_TERRITORY 不能设置为“独立” 环境中的参数或 在客户端注册。
显然,“正确”的解决方案是,在登录Oracle之前,设置以下环境变量:
export NLS_LANG=AMERICAN_AMERICA.UTF8
Oracle因可用性而获得了巨大的成功。
答案 2 :(得分:3)
因此,在操作系统上启动“$ sqlplus ”之前,请运行以下命令:
在Windows上
设置NLS_LANG = AMERICAN_AMERICA.UTF8
在Unix上(Solaris和Linux,centos等)
导出NLS_LANG = AMERICAN_AMERICA.UTF8
建议在'.bash_profile'[启动脚本]中设置env变量
这是通常设置其他ORACLE env变量(ORACLE_SID,ORACLE_HOME)的地方。
只是fyi - SQL Developer 擅长显示/处理非英语UTF8字符。