我有一个关于在 oracle (PL/SQL Developer) 中配置泰语的问题。我在
'AMERICAN_AMERICA.TH8TISASCII'
中配置了泰语regedit
。我还在我的计算机中配置了环境变量。但当我连接 PL/SQL Developer 并检索数据时,应显示泰语描述的列却显示垃圾数据。请帮助我。
垃圾数据的示例是
'¿¿¿¿¿¿¿¿'
Oracle配置如下:
regedit->computer->HKEY_LOCAL_MACHINE->SOFTWARE->ORACLE->KEY_OraDB11g_home1
Windows 配置如下:
我的电脑->高级系统设置->高级系统 设置->环境变量->(这里我添加了变量)
我的同事完成了相同的配置,他们获得了配置,但我无法做到这一点
我已在 regedit 中配置泰语“AMERICAN_AMERICA.TH8TISASCII”。
这意味着您已将 NLS_LANGUAGE 配置为
AMERICAN
,并将 NLS_TERRITORY 配置为 AMERICA
。这是错误的。
您应该选择以下选项:
NLS_LANGAUGE=THAI
NLS_TERRITORY=THAILAND
您需要在以下位置执行此操作:
我认为你的角色设置很好。
更新 OP 遇到了 PL/SQL Developer 工具的问题。
您可以在PL/SQL Developer安装目录的AfterConnect.sql文件中输入“alter session”命令。例如:
更改会话设置 nls_date_format='dd-mm-yyyy'; 更改会话设置 nls_territory='泰国'; 更改会话设置 nls_language='THAI';
我假设您在 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
。