让SQLPlus输出Unicode字符,字符会变成什么样?

8
我正在尝试在Linux机器上使用Oracle sqlplus(10.2)输出Unicode数据。我发现了几个关于这个问题的讨论,但是没有清晰的答案,除了检查区域设置并将NLS_LANG设置为AL32UTF8。所有区域信息都设置为"en_US.UTF-8",如有需要我可以提供完整的输出。
操作系统(例如vi等)可以识别和接受Unicode字符而没有问题。然而,在使用sqlplus时,所有非ASCII字符都被更改为?字符。Oracle数据库的NLS_CHARACTERSET设置为AL32UTF8,NLS_NCHAR_CHARACTERSET设置为AL16UTF16。
是否需要设置某些设置或开关来设置sqlplus本身?任何想法都将不胜感激。
1个回答

16

我找到了答案。显然,在shell脚本中设置NLS_LANG(正确的设置是AMERICAS_AMERICA.AL32UTF8)是不起作用的。必须导出它:

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

应该是: export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 - Robert A Henru
谢谢!已经修正了。 - Todd Allen
2
我被这个问题困扰了好几天。在Windows的命令提示符和cygwin shell脚本中都很好用...但在Linux上却不行。在执行export之后,一切都正常了:)。对我来说,在非语言特定版本中也可以工作:export NLS_LANG=.AL32UTF8 - s3v1
作为一种脚注,将NLS_LANG更改为支持UTF8可能会导致SQL*Plus以CHAR长度语义定义的列输出为不同的宽度。如果您需要确保列的格式,您必须手动使用“COLUMN x FORMAT y”。 - Mr. Llama

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接