将KOI8-R xml节点转换为c#中的unicode

本文关键字:中的 unicode 转换 KOI8-R xml 节点 | 更新日期: 2023-09-27 18:19:09

我有以下xml:

<root>
   <text><![CDATA[ОПЕЛХМЮБЮ ОПЕГ БЗПРЪЫ ЯЕ АЮПЮАЮМ, Б ЙНИРН ЯЕ]]></text>
</root>

我知道这个文本是使用编码KOI8-R生成的(只有当我打开xml文件作为文本时选择这个编码时,这个文本才显示在我的文本编辑器中),我想将这个节点的值转换成c#中可用的字符串。我可以读取这个节点的InnerText值,但这不是我所期望的。有人能告诉我正确的方法来转换用这种编码写的字符串成Unicode吗?

按照Jon Skeet的建议,解决方案应该是这样的:

Encoding encoding = Encoding.GetEncoding("KOI8-R");
XmlDocument doc2 = new XmlDocument();
using (TextReader tr = new StreamReader(outputPath, encoding))
{
    doc2.Load(tr);
}

将KOI8-R xml节点转换为c#中的unicode

你是怎么得到那个XML的?它应该有一个XML声明,说明它使用的编码;否则,仅从XML的角度来看是不正确的。在解析完XML之后,不应该担心编码。可能是这样的:

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

…但正如我所说,文件本身应该声明编码