编译期间出现特殊字符

时间:2015-01-29 07:18:03

标签: oracle oracle11g

在编译包期间,某些字符会变为特殊(德语)字符。就像dm3 in到dm³ 谁可以帮我这个事。?

1 个答案:

答案 0 :(得分:1)

你的字符串似乎是dm³(分米立方)

当您的SLQ * plus脚本包含非ASCII字符时,这总是一场噩梦。

在您的SQL脚本中,将所有dm³替换为UNISTR('dm\00B3'),然后它应该可以正常工作。也许当你使用像TOAD或SQL-Developer这样的编辑器而不是普通的SQL * plus时,它也会有所帮助。

我找到了另一个解决方案。在您启动sqlplus之前,请根据当前代码页设置NLS-Environment。

C:\>chcp
Active code page: 850

C:\>set NLS_LANG=.WE8PC850

C:\>sqlplus user/pwd@db @(your script containing non-ASCII charaters)

甚至在Oracle上记录:NLS_LANG Settings in MS-DOS Mode and Batch Mode

或者你可以反过来做,即设置当前的编码页面符合NLS-Environment。例如:

C:\>REM for x64 Oracle Client

C:\>reg query HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient11g_home1 /v NLS_LANG

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient11g_home1
    NLS_LANG    REG_SZ    AMERICAN_SWITZERLAND.AL32UTF8


C:\>REM for x86 Oracle Client

C:\>reg query HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_OraClient11g_home1 /v NLS_LANG

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_OraClient11g_home1
    NLS_LANG    REG_SZ    AMERICAN_SWITZERLAND.AL32UTF8

C:\>

c:\>chcp 65001
Active code page: 65001

c:\>sqlplus user/pwd@db @(your script saved as UTF-8, without BOM)

在此处查看所有可用代码页的列表:Code pages

在Unix / Linux上,chcp等效于locale charmapecho $LANG