如何在适用于Oracle 11g ODBC客户端的Windows 7上更改NLS_CHARACTERSET设置



我正试图将Oracle数据库中的数据检索到Windows 7 PC上的MS Access或Excel中。数据包括度数和直径符号等字符。这些没有在电脑上正确显示。我可以看到,在我的查询中使用转储功能正确存储了数据,并且是对客户端字符集的翻译没有将它们引入。

通过查看这个查询,以及使用SELECT * FROM NLS_database_PARAMETERS查询数据库参数,我可以看到NLS_CHARACTERSET = US7ASCII。我认为这是问题的原因,因为直径符号等不包括在这个字符集中。

但是,我已经检查了注册表,看看NLS_LANG设置为什么,它是ENGLISH_UNITED KINGDOM.WE8MSWIN1252。我知道我正在查找正确的注册表项,因为当我更改语言/区域(例如GERMAN_GERMANY)时,它确实会更改我的查询。

我还检查了一个覆盖此设置的环境变量,但找不到。我尝试创建一个NLS_LANG环境变量,使用与上面相同的设置,但没有任何区别。

我的Windows代码页设置为1252。数据库NLS_NCHAR_CHARACTERSET设置为AL16UTF16

下一步该怎么办?

如果NLS_CHARACTERSET设置为US7ASCII,则永远不会从中获得任何特殊字符。使用NLS_NCHAR_CHARACTERSET=AL16UTF16,您应该获得任何字符,前提是列的数据类型是NVARCHAR2NCHAR(而不是VARCHAR2)

将您的本地NLS_LANG设置为ENGLISH_UNITED KINGDOM.AL32UTF8,然后它应该可以工作。

最新更新