1
我有以下XML:轉換KOI8-R XML節點轉換爲Unicode在C#
<root>
<text><![CDATA[ОПЕЛХМЮБЮ ОПЕГ БЗПРЪЫ ЯЕ АЮПЮАЮМ, Б ЙНИРН ЯЕ]]></text>
</root>
我知道這段文字是用編碼KOI8-R產生的(這個文本顯示在我的文本編輯器中,只有當我選擇這種編碼當我打開XML文件爲文本),我想將此節點的值轉換爲可在C#中使用的字符串。我可以讀取此節點的InnerText值,但這不是我所期望的。有人能告訴我用這種編碼將字符串轉換成Unicode的正確方法嗎?
更新
繼喬恩斯基特建議,解決方案應該是這樣的:
Encoding encoding = Encoding.GetEncoding("KOI8-R");
XmlDocument doc2 = new XmlDocument();
using (TextReader tr = new StreamReader(outputPath, encoding))
{
doc2.Load(tr);
}
該文件是由外部工具生成的(xpdf - 我認爲),這是我得到的唯一的東西。現在,我不太熟悉linq和外部聲明......我應該使用哪些名稱空間來指定OpenText方法的編碼?我嘗試了System.Linq和System.Xml.Linq,但它們都沒有工作... – dcg 2012-01-02 10:41:50
@dcg:如果你不想使用'XDocument',那麼'XmlDocument.Load'也會帶一個'TextReader' 。但是,如果xpdf基本上創建了一個無效的XML文件或一個文本錯誤的文件,那麼它非常糟糕。您確定這不是在流水線早期出現問題嗎?確切地找出問題出在哪裏是值得的,否則你很可能會丟失數據。 – 2012-01-02 10:44:23
不幸的是,我無法去改變那件事。這是非常舊的代碼由其他人寫的,它迄今爲止工作得很好。對我來說,看看innerText值會更容易/更快。那麼,它就是這樣的!謝謝! – dcg 2012-01-02 10:55:04