仅为 SQL*Plus 设置 NLS_LANG

hak*_*aki 4 oracle sqlplus

NLS_LANG在注册表中设置了我的本地语言。CMD 无法显示我当地语言的字符,所以我看到了 jibrish。我说的是来自客户端的提示而不是实际数据,例如错误消息。

SQL> conn scott/tiger
???ß°.
Run Code Online (Sandbox Code Playgroud)

我需要将客户端的设置保留在本地 NLS 中,因为其他程序依赖于它。

我已经尝试添加$set NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252glogin,但显然它不起作用,因为脚本仅在 sql*Plus 已经启动后执行。

我的问题是,有没有什么方法NLS_LANG可以AMERICAN_AMERICA.WE8MSWIN1252 为 SQL*Plus设置to ?

Lud*_*ltz 7

NLS_LANG不能为 SQL*Plus 中的会话更改。您只能设置语言、地域、数字字符等...例如:

ALTER SESSION SET NLS_LANGUAGE = 'AMERICAN';
ALTER SESSION SET NLS_NUMERIC_CHARACTERS = '.,';
Run Code Online (Sandbox Code Playgroud)

NLS_LANG被设置为环境变量,所以在运行SqlPlus之前使用:

在 Windows 上:

set NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252
Run Code Online (Sandbox Code Playgroud)

在 Unix(Solaris 和 Linux、centos 等)上

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


小智 0

更改会话设置 nls_language='AMERICAN';

会解决你的问题...