2011-11-08 56 views
0

我正在使用Oracle 10gR2。已註冊的符號沒有按原樣插入表中

的字符DB中設置是如下:
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_CHARACTERSET AL32UTF8。

我正在獲取要在TXT文件中處理的數據。處理這些數據的第一步是根據這些平面文件創建外部表格。平面文件中的一個字段(以及DB中的列)具有字符串數據,其中包含®(註冊符號)。這個字符在txt文件中是可見的,但是當我檢查外部表時,字符被保存爲

我已經將IDE的編碼修改爲UTF-8,其中我看到了查詢的輸出。

列的數據類型爲:COL NVARCHAR2(1000)

請建議,以什麼可能會造成這個?

回答

0

通常這是由NLS_LANG環境變量的不正確設置引起的。 NLS_LANG變量必須告訴oracle您用於數據的編碼。如果NLS_LANG未設置,則oracle將採用ASCII文本(並且您的符號不是ascii)。

如果你的數據是UTF-8,請嘗試:

NLS_LANG = .AL32UTF8

對於windows/ISO嘗試

NLS_LANG = .WE8ISO8859P15

您需要確定的編碼你的文本文件第一。使用十六進制編輯器確定(R)符號是否爲UTF-8。

+0

存儲文本文件的Linux盒子上的NLS_LANG參數已正確設置:export NLS_LANG =「American_America.AL32UTF8」 – Incognito

+0

任何人都可以提出其他建議嗎? – Incognito

+0

謝謝!我發現文件的字符集編碼不正確,這就是導致字符集轉換的原因 – Incognito

相關問題