我有xml文件表示從郵件客戶端導出的電子郵件。不幸的是,當我嘗試讀取這些文件時,特殊字符不會顯示爲顯示原始字符。編碼錯誤 - xml數字替換被誤解了
我試圖讓我在.NET中編寫的客戶端中正確讀取。
例子:我碰到下面的數字替代:
á
這被解釋爲:
á
而原來的/期望值是:
ú
一個可能被更好的例子:
Tað eftir er av árinum ber tó til at logga á
這被解釋爲:
Tað eftir er av árinum ber tó til at logga á
原始/期望值是:
Tað eftir er av árinum ber tó til at logga á
我可以觀察到,這個問題似乎是,該淨解釋Ã °爲兩個獨立的角色,而實際上代表一個角色。
我相信,我應該能夠使用本網站翻譯解釋值注入預期值(雖然沒有確切的文字,我得到):http://www.i18nqa.com/debug/utf8-debug.html
但我無法得到它正確顯示。淨。
x.Load(
New StreamReader(
File.Open("content.xml", FileMode.Open),
Encoding.GetEncoding(1252), True
)
)
這沒有什麼區別。如果我嘗試Encoding.Unicode則無法讀取文件(錯誤:在根級別無效數據)
爲什麼你會期望兩個數字替換被解析爲單個字符?數字替換用於*字符*實體,而不是*字節*。 TL; DR:我相信你的XML不正確,不是.NET的處理。 –
也許我可以手動取兩個十進制值195和161並將其轉換爲十六進制,這會變成c3和ba,這是字符ú的UTF-8十六進制值。但是,這種轉換功能是不是內置在.net中? – Andras
我想你已經錯過了我的觀點。.NET中的XML處理正在做它應該做的事情。如果你想用XML表示U + 00FA,它應該表示爲'ú'或'ú'。實體中的數字是一個代碼點,如下所示:https://www.w3.org/TR/xml/#sec-references - 它不是*意思是「一個字節,它是編碼表示的一部分一個人物」。 –