已注册的符号未按原样插入表中

时间:2011-11-08 18:24:47

标签: sql oracle unicode oracle10g

我正在研究Oracle 10gR2。

DB的字符集如下:
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_CHARACTERSET AL32UTF8。

我正在获取要在TXT文件中处理的数据。处理此数据的第一步是基于这些平面文件创建外部表。平面文件中的一个字段(以及DB中的列)具有字符串数据,其中包含®(注册符号)。此字符在txt文件中可见,但是当我检查外部表时,该字符将保存为

我已将IDE的编码修改为UTF-8,在那里我看到了查询的输出。

该列的数据类型为:COL NVARCHAR2(1000)

请告知可能导致此问题的原因?

1 个答案:

答案 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。