我试图将数据从Oracle数据库检索到MS Access或Excel到Windows 7 PC。数据包括诸如度数和直径符号的字符。这些在PC上无法正确显示。我可以看到数据在我的查询中使用dump函数正确存储,并且它是客户端字符集的转换,不会将它们带入。
通过查看此查询,并使用SELECT * FROM NLS_database_PARAMETERS
查询数据库参数,我可以看到NLS_CHARACTERSET = US7ASCII
。我认为这是问题的原因,因为直径符号等不包含在此字符集中。
但是,我已经检查了注册表,看看NLS_LANG的设置是什么,它是ENGLISH_UNITED KINGDOM.WE8MSWIN1252
。我知道我正在查找正确的注册表项,因为当我更改语言/区域时(例如GERMAN_GERMANY
),它确实会更改我的查询。
我还检查了一个覆盖此设置但无法找到的环境变量。我尝试使用与上面相同的设置创建NLS_LANG环境变量,但这没有任何区别。
我的Windows代码页设置为1252.数据库NLS_NCHAR_CHARACTERSET
设置为AL16UTF16
。
关于下一步该怎么做的任何想法?
答案 0 :(得分:0)
如果NLS_CHARACTERSET
设置为US7ASCII
,那么您将永远不会从中获取任何特殊字符。使用NLS_NCHAR_CHARACTERSET=AL16UTF16
,如果您的列的数据类型为NVARCHAR2
或NCHAR
(不是VARCHAR2
)
将您的本地NLS_LANG
设置为ENGLISH_UNITED KINGDOM.AL32UTF8
然后它应该有效。