Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在c中将KOI8-R xml节点转换为unicode#_C#_Unicode_Character Encoding - Fatal编程技术网

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

C# 在c中将KOI8-R xml节点转换为unicode#,c#,unicode,character-encoding,C#,Unicode,Character Encoding,我有以下xml: <root> <text><![CDATA[ОПЕЛХМЮБЮ ОПЕГ БЗПРЪЫ ЯЕ АЮПЮАЮМ, Б ЙНИРН ЯЕ]]></text> </root> 您是如何获得XML的?它应该有一个XML声明,说明它使用的是哪种编码;否则,就XML而言,它是不正确的。在解析XML之后,您不应该担心编码问题。因此,可能会出现以下情况: Encoding encoding = Encoding.GetEnco

我有以下xml:

<root>
   <text><![CDATA[ОПЕЛХМЮБЮ ОПЕГ БЗПРЪЫ ЯЕ АЮПЮАЮМ, Б ЙНИРН ЯЕ]]></text>
</root>
您是如何获得XML的?它应该有一个XML声明,说明它使用的是哪种编码;否则,就XML而言,它是不正确的。在解析XML之后,您不应该担心编码问题。因此,可能会出现以下情况:

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

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

文件是由一个外部工具(我想是xpdf)生成的,这是我得到的唯一东西。现在,我不太熟悉linq和那些外部声明。。。我应该使用什么名称空间来指定OpenText方法的编码?我试过使用System.Linq和System.Xml.Linq,但它们都不起作用…@dcg:如果你不想使用
XDocument
,那么
XmlDocument.Load
也需要
TextReader
。但是,如果xpdf基本上创建了一个无效的XML文件,或者创建了一个包含错误文本的XML文件,那就太糟糕了。你确定这不是早些时候出现的问题吗?找出问题的确切起点是值得的,否则很容易丢失数据。不幸的是,我没有办法去改变这件事。这是由其他人编写的非常旧的代码,到目前为止运行良好。只需查看innerText值,对我来说会更容易/更快。嗯,它是这样工作的!谢谢@dcg:请注意,如果文档的其余部分没有使用相同的方式进行编码,则很容易将问题存储起来以备将来使用。如果这是你将长期使用的东西,我会认真考虑把时间花在修复旧代码上。
Encoding encoding = Encoding.GetEncoding("KOI8-R");
XDocument doc;
using (var reader = File.OpenText("file.xml", encoding))
{
    doc = XDocument.Load(reader);
}