2011-07-05 53 views
0

需要以UTF-8編碼保存XML,然後在T-SQL代碼中使用它來提取數據。SQL Server 2008:UTF-8代碼頁面65001的排序

默認數據庫排序規則是SQL_Latin1_General_CP1_CI_AS。

我不知道是否可以在SQL Server 2008中保存和使用UTF-8數據,但我有一個想法,在XML列中使用UTF-8(65001)代碼頁的排序規則爲了將數據保存在UTF-8中。

有沒有人知道如何在SQL Server中使用UTF-8數據可行或有其他想法?

+0

沒有必要以UTF-8存儲數據。用於xml列的UTF-16非常好。當數據通過附加層(在我的情況下是Java)提供給外部時,它可能總是被轉換爲UTF-8。 – Tim

回答

1

如果您正在處理xml數據,請將其存儲爲xml數據類型。這應該考慮到你的任何問題(即如何存儲它),並且當你處理它時(例如xpath表達式,xquery等),你可以節省自己將其轉換爲xml的工作。

0

NVARCHAR列應該做的工作就好了。

+0

如何在UCS-2編碼而不是UTF-8中將結果返回給客戶端? – Tim

+0

如果使用NVARCHAR存儲XML,則您的XML必須包含UTF-16 BOM內容或具有'encoding =「utf-16」'(並且可能沒有指定任何非對等編碼)。如果你不這樣做,那麼你可能遇到的一些問題包括SQL Server自己內置的XML解析XML的東西。 – binki

0

您可以將所有Unicode字符存儲在xmlnvarchar列中。使用什麼樣的排序規則無關緊要。少數罕見的中文字符(來自輔助平面)可以作爲nchars(代理對)成對存儲。但是沒有數據丟失。