将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);
}
你是怎么得到那个XML的?它应该有一个XML声明,说明它使用的编码;否则,仅从XML的角度来看是不正确的。在解析完XML之后,不应该担心编码。可能是这样的:
Encoding encoding = Encoding.GetEncoding("KOI8-R");
XDocument doc;
using (var reader = File.OpenText("file.xml", encoding))
{
doc = XDocument.Load(reader);
}
…但正如我所说,文件本身应该声明编码