【问题标题】:Why Oracle displays ??? for special characters like åäö为什么甲骨文显示???对于像åäö这样的特殊字符
【发布时间】:2014-11-06 18:42:05
【问题描述】:

前段时间我的 PL/SQL 停止显示字符 åäö

我已经尝试重新安装 oracle_home_11g,PL/SQL 清理了注册表,但问题仍然存在。

有人知道为什么吗?

【问题讨论】:

  • 听起来您的客户端设置有问题。您可能需要在系统上设置正确的 NLS_LANG 参数。
  • 已经检查过并且是正确的。

标签: oracle nls-lang


【解决方案1】:

很可能是由于特定于语言环境的 NLS 字符集数据库字符集不匹配。否则,NLS_LANG 值未在 OS 环境变量中正确设置。

看看Why are junk values/special characters/question marks displayed on my client?

  1. 您的客户端字符集与数据库字符集不匹配。

您可以比较:

-- 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 字符集设置为数据库字符集。

  1. 如果上述字符集匹配,则需要在 OS 环境变量中设置 NLS_LANG 值。

对于 Windows 操作系统,格式为:

[NLS_LANGUAGE]_[NLS_TERRITORY].[NLS_CHARACTERSET]

按照文档中有关设置 NLS_LANG 的说明进行操作:Setting the NLS_LANG Environment Variable for Oracle Databases

【讨论】:

  • 从 v$nls_parameters 中选择值 UNION ALL 从 nls_database_parameters 中选择值:1 SWEDISH 2 SWEDEN 3 Kr 4 SWEDEN 5 ,. 6 GREGORIAN 7 RRRR-MM-DD 8 瑞典语 9 WE8MSWIN1252 10 瑞典语 11 HH24:MI:SSXFF 12 RRRR-MM-DD HH24:MI:SSXFF 13 HH24:MI:SSXFF TZR 14 RRRR-MM-DD HH24:MI:SSXFF TZR 15 € 16 AL16UTF16 17 BINARY 18 BYTE 19 FALSE 20 AMERICAN 21 AMERICA 22 $ 23 AMERICA 24 ., 25 WE8MSWIN1252 26 GREGORIAN 27 DD-MON-RR 28 AMERICAN 29 BINARY 30 HH.MI.SSXFF AM 31 DD-MON-RR HH. MI.SSXFF AM 32 HH.MI.SSXFF AM TZR 33 DD-MON-RR HH.MI.SSXFF AM TZR 34 $ 35 BINARY 36 CHAR 37 FALSE 38 AL16UTF16 39 11.2.0.3.0
  • 错了,看看这个NLS_LANG FAQ 哪里说:“B)SELECT * from v$nls_parameters; 这个视图显示当前会话参数和 DATABASE 字符集在 NLS_DATABASE_PARAMETERS 视图中。”并且“NLS_LANG 的 部分未显示在任何系统表或视图中。
  • @WernfriedDomscheit 我没听懂你。您在重申与答案和常见问题解答相同的事情。怎么了?我在哪里说过可以在 v$ 视图中看到 NLS_LANG 值?前者是数据库级别,后者是操作系统级别。
  • 你写 你可以比较: -- locale-specific characterset select ... from v$nls_parameters; -- 数据库字符集 select ... from nls_database_parameters ...如果您看到不匹配...。这意味着这些值可能不同。但是,根据 NLS_LANG 常见问题解答,两个查询都显示数据库字符集,因此它们永远不会不同。
  • 没有帮助....两者都显示相同的值。 NLS_LANG 在我的 Windows 上正确设置;在注册表中。我什至尝试在启动 SQLPlus 之前设置环境变量,但结果相同......我认为你的答案不准确
猜你喜欢
  • 2011-04-09
  • 2015-08-24
  • 1970-01-01
  • 1970-01-01
  • 2021-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多