在编译包期间,某些字符会变为特殊(德语)字符。就像dm3 in到dm³ 谁可以帮我这个事。?
答案 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 charmap
或echo $LANG