【发布时间】:2014-11-06 18:42:05
【问题描述】:
前段时间我的 PL/SQL 停止显示字符 åäö。
我已经尝试重新安装 oracle_home_11g,PL/SQL 清理了注册表,但问题仍然存在。
有人知道为什么吗?
【问题讨论】:
-
听起来您的客户端设置有问题。您可能需要在系统上设置正确的 NLS_LANG 参数。
-
已经检查过并且是正确的。
前段时间我的 PL/SQL 停止显示字符 åäö。
我已经尝试重新安装 oracle_home_11g,PL/SQL 清理了注册表,但问题仍然存在。
有人知道为什么吗?
【问题讨论】:
很可能是由于特定于语言环境的 NLS 字符集和数据库字符集不匹配。否则,NLS_LANG 值未在 OS 环境变量中正确设置。
看看Why are junk values/special characters/question marks displayed on my client?
您可以比较:
-- locale-specific characterset
select value
from v$nls_parameters
where parameter = 'NLS_CHARACTERSET';
-- database characterset
select value
from nls_database_parameters
where parameter = 'NLS_CHARACTERSET';
如果您发现两者不匹配,则将特定于语言环境的 NLS 字符集设置为数据库字符集。
对于 Windows 操作系统,格式为:
[NLS_LANGUAGE]_[NLS_TERRITORY].[NLS_CHARACTERSET]
按照文档中有关设置 NLS_LANG 的说明进行操作:Setting the NLS_LANG Environment Variable for Oracle Databases
【讨论】:
SELECT * from v$nls_parameters; 这个视图显示当前会话参数和 DATABASE 字符集在 NLS_DATABASE_PARAMETERS 视图中。”并且“NLS_LANG 的