4

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

SQL> conn scott/tiger
ετσß°.

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

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

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

4

5 回答 5

7

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

ALTER SESSION SET NLS_LANGUAGE = 'AMERICAN';
ALTER SESSION SET NLS_NUMERIC_CHARACTERS = '.,';

NLS_LANG设置为环境变量,因此在运行SqlPlus之前使用:

在 Windows 上:

set NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252

在 Unix 上(Solaris 和 Linux,centos 等)

export NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252
于 2016-03-31T17:28:42.933 回答
1

您可以在 SQL*Plus 启动时使用login.sql 或 glogin.sql运行任意命令,因此在其中设置适当的会话设置

于 2015-09-01T15:32:14.413 回答
0

更改会话集 nls_language='AMERICAN';

会解决你的问题...

于 2013-06-12T13:10:17.360 回答
0

当我今天遇到同样的问题时,这对我有用

在运行 sqlplus 之前从 Windows 命令提示符运行

set NLS_LANG=.AL32UTF8
于 2018-04-20T17:27:34.003 回答
-2
set linesize 2000;
select * from NLS_DATABASE_PARAMETERS; 


SHUTDOWN IMMEDIATE;

STARTUP MOUNT;

ALTER SYSTEM ENABLE RESTRICTED SESSION;

ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

ALTER SYSTEM SET AQ_TM_PROCESSES=0;

ALTER DATABASE OPEN;

ALTER DATABASE CHARACTER SET INTERNAL_USE  WE8MSWIN1252;
alter database national character set internal_use AL16UTF16;

SHUTDOWN IMMEDIATE; 
STARTUP;
于 2017-04-16T18:32:33.250 回答