2016-12-28 72 views
0

我正在從Java程序中插入一些特殊字符像»é‡æßÌæ到Oracle 11g數據庫,但在數據庫會存儲爲»é¿æß¿ 012不能插入從java程序的特殊字符到Oracle 11g數據庫

某些字符被替換爲‡替換。 請告訴我什麼是這樣做的正確方法。 在此先感謝。

Manish

+0

您是否能夠在數據庫中存儲所有有問題的字符,即通過另一個客戶端(如SQLDeveloper)?數據庫的字符集是什麼? –

+0

嗨米克,謝謝你的回覆。我的數據庫字符集是WE8ISO8859P1,我無法將其更改爲utf-8。這就是爲什麼我將我的印地文文本轉換爲這些特殊字符並保存到數據庫。但正如你所看到的一些人物不會被取代。 –

回答

0

您應該選擇數據類型UTF8GENERALCI。

0

對Oracle數據類型使用UTF-8編碼。

0

檢查您的數據庫設置爲使用Unicode:

select * from nls_database_parameters 
    where parameter='NLS_CHARACTERSET'; 

如果答案是AL32UTF8,你的罰款。如果它是像WE8ISO8859P1那樣,您有問題。在這種情況下沒有簡單的解決方案;你必須建立一個新的數據庫實例。

+0

嗨Ammo,謝謝你的回覆。是的,我的數據庫字符集是WE8ISO8859P1,我無法將其更改爲utf-8。任何其他方式來做同樣的事情都會很感激。 –

+0

如果您至少可以更改表結構,請將NVARCHAR2而不是VARCHAR2用於需要unicode支持的列。如果這不可能,你的最後一個選擇是以某種方式編碼你的字符串,然後再將它寫入數據庫,並在讀回數據庫後對它進行解碼。例如,您可以使用Base64編碼或HTML編碼將這些unicode字符串更改爲ISO8859P1 VARCHAR2可以處理的內容。 –

+0

Ammo,謝謝你的回覆。我嘗試過NVARCHAR2,但結果相同。我想我錯過了一些東西。是否有任何必需的操作系統級別設置或使用JDBC連接數據庫時的設置。 –