我有以下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);
}
答案 0 :(得分:2)
你是如何拥有该XML的?它应该有一个XML声明,说明它正在使用哪种编码;否则它只是用XML术语来说是不正确的。在解析XML之后,您不应该担心编码 。所以可能是这样的:
Encoding encoding = Encoding.GetEncoding("KOI8-R");
XDocument doc;
using (var reader = File.OpenText("file.xml", encoding))
{
doc = XDocument.Load(reader);
}
...但正如我所说,文件本身应该声明编码。