我正在研究Oracle 10gR2。
DB的字符集如下:
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_CHARACTERSET AL32UTF8。
我正在获取要在TXT文件中处理的数据。处理此数据的第一步是基于这些平面文件创建外部表。平面文件中的一个字段(以及DB中的列)具有字符串数据,其中包含®(注册符号)。此字符在txt文件中可见,但是当我检查外部表时,该字符将保存为
我已将IDE的编码修改为UTF-8,在那里我看到了查询的输出。
该列的数据类型为:COL NVARCHAR2(1000)
请告知可能导致此问题的原因?
答案 0 :(得分:0)
通常,这是由NLS_LANG环境变量的错误设置引起的。 NLS_LANG变量必须告诉oracle您用于数据的编码。如果未设置NLS_LANG,则oracle将采用ASCII文本(并且您的符号为非ascii)。
如果您的数据是UTF-8,请尝试:
NLS_LANG = .AL32UTF8
对于windows / iso尝试
NLS_LANG = .WE8ISO8859P15
您需要先确定文本文件的编码。使用十六进制编辑器确定(R)符号是否为UTF-8。