конвертировать XML-узел KOI8-R в Unicode в C # - PullRequest
1 голос
/ 02 января 2012

У меня есть следующий XML:

<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);
}

1 Ответ

2 голосов
/ 02 января 2012

Как у вас есть этот XML?Он должен иметь объявление XML с указанием, какую кодировку он использует;иначе это не правильно просто в терминах XML.Вам не стоит беспокоиться о кодировках после , когда вы проанализировали XML.Потенциально что-то вроде:

Encoding encoding = Encoding.GetEncoding("KOI8-R");
XDocument doc;
using (var reader = File.OpenText("file.xml", encoding))
{
    doc = XDocument.Load(reader);
}

... но, как я уже сказал, сам файл должен объявлять кодировку.

...