Oracle中的泰语配置

时间:2015-02-23 05:50:36

标签: oracle plsqldeveloper nls-lang

我有一个关于在oracle(PL / SQL Developer)中配置泰语的问题。我在'AMERICAN_AMERICA.TH8TISASCII'中配置了泰语regedit。我还在我的计算机中配置了环境变量。但是当我连接PL / SQL开发人员并检索数据时,应该显示泰语描述的列显示垃圾数据。请帮帮我。

垃圾数据示例为'¿¿¿¿¿¿¿¿'

Oracle配置如下: regedit->computer->HKEY_LOCAL_MACHINE->SOFTWARE->ORACLE->KEY_OraDB11g_home1

Windown配置如下:

  

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

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

2 个答案:

答案 0 :(得分:0)

  

我在注册表中配置了泰语'AMERICAN_AMERICA.TH8TISASCII'。

这表示您已将 NLS_LANGUAGE 配置为AMERICAN,将 NLS_TERRITORY 配置为AMERICA。哪个错了。

您应该选择以下内容:

NLS_LANGAUGE=THAI 
NLS_TERRITORY=THAILAND

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

  1. 数据库级别 - init.ora文件
  2. 环境级别 - NLS LANG设置
  3. 我认为你的角色很好。

    UPDATE OP解决了PL / SQL Developer工具的问题。

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

    alter session set nls_date_format ='dd-mm-yyyy'; alter session set nls_territory ='THAILAND'; alter session set nls_language ='THAI';

    source

答案 1 :(得分: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