2013-06-13 23 views
1

我需要將特定於語言的字符保存在xml數據類型的列中,因爲XML是我檢索它時希望的格式。就在堅持之前,我在XML中看到俄文字符,但在堅持使用JPA之後實際存儲的內容就像是'??????'。需要注意的是,要求是保持列數據類型爲xml。我盡力在網上找到任何東西,但沒有成功。如果有人能幫我解決這個問題。無法將語言特定字符保存到xml數據庫的數據庫列中

我有一個函數,它將包含語言字符的地圖作爲其參數之一。該函數將地圖轉換爲XML格式並返回字符串。然後這被持久保存到數據庫中:

entityManager.persist(X) 

,其中X是具有映射到它的一個XML字符串的實體對象的屬性。

private String toXML(Map<String, String> map, String root) { 
    StringBuilder xmlSB = new StringBuilder(OPEN_NODE); 
    // Logic to convert map to XML 
    return xmlSB.toString(); 
} 

緊接在entityManager.persist(X)之後,我在數據庫表中看到的條目就像'????'在我的情況下替換所有的俄羅斯人物,休息一切仍然是一樣的。

+1

您可以添加底層的SQL和表嗎?基本上,您發送的是非Unicode字符串,或者它不是真正的XML列。例如,http://stackoverflow.com/a/6857945/27535或http://stackoverflow.com/a/1694267/27535或http://stackoverflow.com/a/4767737/27535 – gbn

+0

什麼是字符集並整理您使用的數據庫 –

+0

@gbn我有表X列,與xml數據類型,我不想要更改數據類型爲nvarchar。我很感謝你的幫助。謝謝 – abhimanyu435

回答

-1

修改列排序規則爲UTF-8和添加字符串的characterEncoding = UTF-8在你的JDBC URL。這個邏輯曾經用於mysql。

但是爲了將特殊字符存儲在mssql中,需要將列的數據類型更改爲nvarchar()而不是varchar()。

+0

請幫我修改SQL Server 2008的UTF-8列排序規則嗎?我想,在這裏我們沒有選擇在2005/2008年更改排序規則。最終,我們不得不改變數據類型,這是不可接受的。 – abhimanyu435

+0

SQL Server通過nvarchar數據類型使用UCS-2 – gbn