Oracle 中的泰语配置

问题描述 投票:0回答:2

我有一个关于在 oracle (PL/SQL Developer) 中配置泰语的问题。我在

'AMERICAN_AMERICA.TH8TISASCII'
中配置了泰语
regedit
。我还在我的计算机中配置了环境变量。但当我连接 PL/SQL Developer 并检索数据时,应显示泰语描述的列却显示垃圾数据。请帮助我。

垃圾数据的示例是

'¿¿¿¿¿¿¿¿'

Oracle配置如下:

regedit->computer->HKEY_LOCAL_MACHINE->SOFTWARE->ORACLE->KEY_OraDB11g_home1

Windows 配置如下:

我的电脑->高级系统设置->高级系统 设置->环境变量->(这里我添加了变量)

我的同事完成了相同的配置,他们获得了配置,但我无法做到这一点

oracle plsqldeveloper nls-lang
2个回答
0
投票

我已在 regedit 中配置泰语“AMERICAN_AMERICA.TH8TISASCII”。

这意味着您已将 NLS_LANGUAGE 配置为

AMERICAN
,并将 NLS_TERRITORY 配置为
AMERICA
。这是错误的。

您应该选择以下选项:

NLS_LANGAUGE=THAI 
NLS_TERRITORY=THAILAND

您需要在以下位置执行此操作:

  1. 数据库级别-init.ora文件
  2. 环境级别 - NLS LANG 设置

我认为你的角色设置很好。

更新 OP 遇到了 PL/SQL Developer 工具的问题。

您可以在PL/SQL Developer安装目录AfterConnect.sql文件中输入“alter session”命令。例如:

更改会话设置 nls_date_format='dd-mm-yyyy'; 更改会话设置 nls_territory='泰国'; 更改会话设置 nls_language='THAI';

来源


0
投票

我假设您在 PL/SQL Developer 中选择的字体不支持泰语字符。尝试使用此命令来检查:

SELECT UNISTR('Kho Khuat: \0E03') FROM DUAL;

你能得到这样的正确输出吗?

Kho Khuat: ฃ

如果没有,您应该选择支持泰语字符的字体。 您可以使用此页面FileFormat.info来检查哪种字体支持您的字符。

NLS_LANG

的值应与您的
本地环境设置匹配,而不是数据库中的设置。这样,所有字符都可以在 SQL 通信中正确翻译。

使用此命令检查本地环境:

c:\>reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage /v ACP

就我而言是

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage ACP REG_SZ 1252

所以,我的 NLS_LANG 应设置为

.WE8MSWIN1252

 或类似的值。

但是,这仅在您的应用程序(在您的情况下为 SQL Developer)使用 Windows 中的默认编码设置时才有效。在某些应用程序中,您可以更改这一点 - 通常您可以在本地代码页和 Unicode (UTF-8) 之间切换。在这种情况下,您必须相应地修改 NLS_LANG

© www.soinside.com 2019 - 2024. All rights reserved.