2014-05-07 53 views
0

我正在讀取一些數據,包括XML中的CDATA字符串。 XML由linux機器生成,並以utf-8編碼。 XML中的文本是由Windows機器上的人員再次創建的,並且可能包含諸如「和」之類的窗口unicode符號。現在這些符號在整個過程中不知何故被破壞。當我用瀏覽器查看XML時,符號不可見,當我將文本粘貼到Windows編輯器中時,它們顯示爲矩形(無效字符)。當我將它們粘貼到ascii解碼器(http://www.asciivalue.com/index.php)中時,它們會被解開爲正確的HTML表示形式。 („ “)。當我在編輯器中以Unicode格式保存它們時,它們將以84 00 93 00形式出現。Unicode到UTF-8到Unicode?

如何在C#中轉換XML字符串以便這些Unicode符號將被恢復?

+0

注意(1)'asciivalue.com'絕對不適用於除基本ASCII之外的任何字符。對於其他Unicode字符,包括那些智能報價,它會產生不正確和誤導性的輸出。 (2)「Unicode」實際上不是任何編碼的名稱。當像記事本這樣的Microsoft工具可以讓你保存爲「Unicode」時,它們的確意味着UTF-16LE編碼。這種令人誤解的命名有着單調的歷史原因,但通常這種編碼最好避免使用UTF-8。 – bobince

回答

3

您的術語令人困惑。 Unicode是一組字符,UTF-8是Unicode的編碼;因此您不能將Unicode轉換爲UTF-8,您只能在UTF-8和Unicode的其他編碼之間進行轉換。同樣,「Windows Unicode」是無稽之談。

我認爲,當「和」字符被插入到XML文件中時,它們不正確地使用其Windows-1252代碼而不是UTF-8代碼表示。所以你的文件是UTF-8和Windows-1252的混合體,這使得它不可能解碼。你需要防止這種情況發生。