在oracle中,如何更改会话以显示UTF8?

Aar*_* Fi 13 oracle utf-8

对于我的生活,我无法弄清楚Oracle的加密语法.这是Oracle 10g

我的会话的NLS_LANGUAGE目前默认为AMERICAN.我需要能够显示UTF8字符.

以下是我的一些尝试,都是错误的:

ALTER SESSION SET NLS_LANGUAGE='UTF8'
ALTER SESSION SET NLS_LANGUAGE='AMERICAN_AMERICA.UTF8'
Run Code Online (Sandbox Code Playgroud)

什么是秘密命令?

APC*_*APC 13

字符集是语言环境的一部分,由值决定NLS_LANG.正如文档所示,这是一个操作系统变量:

NLS_LANG在UNIX平台上设置为环境变量.NLS_LANG 在Windows平台上的注册表中设置.

现在我们可以ALTER SESSION用来更改几个语言环境元素的值,NLS_LANGUAGE和NLS_TERRITORY.但不是,唉,字符集.这种差异的原因是 - 我认为 - 语言和区域只会影响Oracle如何解释存储的数据,例如,在显示大数字时是显示逗号还是显示句点.字符集的轮廓与客户端应用程序如何呈现显示的数据有关.客户端应用程序在启动时获取此信息,并且无法从内部更改.

  • 我对WHY的理解是不同的.必须在与数据库建立sql*net连接之前确定客户端的字符集,以便可以使用正确的字符集转换. (6认同)

Aar*_* Fi 9

好的,根据http://www.oracle.com/technology/tech/globalization/htdocs/nls_lang%20faq.htm:

ALTER SESSION,NLS_LANGUAGE和NLS_TERRITORY都无法更改NLS_LANG.但是,NLS_LANGUAGE和/或NLS_TERRITORY不能在客户端的环境或注册表中设置为"独立"参数.

显然,"正确"的解决方案是,在完全登录Oracle之前,设置以下环境变量:

export NLS_LANG=AMERICAN_AMERICA.UTF8
Run Code Online (Sandbox Code Playgroud)

Oracle因可用性而获得了巨大的成功.