C# XDocument解析忽略汉字

C# XDocument解析忽略汉字,c#,xml,linq-to-xml,C#,Xml,Linq To Xml,我有一个XML字符串,其中包含一些中文字符,如�菅࿼Ჽ탽᫴。因此,当使用XDocument.Parse对其进行解析时,它会抛出以下异常 System.Xml.Xml异常:“”,十六进制值0x01,是无效字符 我尝试将xml字符串转换为UTF-8。但还是一样的问题 有什么想法吗 更新: XML包含很多元素,但使用下面的答案时,它忽略了所有其他元素,而只是转换具有特殊字符的元素,使用XDocument而不是XElement可以做什么吗?将XmlReader与XmlReaderSettings一起使

我有一个XML字符串,其中包含一些中文字符,如
�菅࿼Ჽ탽᫴。因此,当使用
XDocument.Parse对其进行解析时,它会抛出以下异常

System.Xml.Xml异常:“”,十六进制值0x01,是无效字符

我尝试将xml字符串转换为
UTF-8
。但还是一样的问题

有什么想法吗

更新:


XML包含很多元素,但使用下面的答案时,它忽略了所有其他元素,而只是转换具有特殊字符的元素,使用
XDocument
而不是
XElement
可以做什么吗?

将XmlReader与XmlReaderSettings一起使用。将CheckCharacters设置为false将解决您的问题

更新

下面是我用来加载日语xml文件的内容

string xmlText = "your xml data";
XElement node;
XmlReaderSettings xrs = new XmlReaderSettings();
xrs.CheckCharacters = false;
using (XmlReader rd = XmlReader.Create(new StringReader(xmlText), xrs))
{
    node = XElement.Load(rd);
}

我还想将其与
XDocument
一起使用,谢谢!当我再次尝试将其转换为xml字符串时,我遇到了相同的问题。您是否尝试过使用node.Value替换它?抱歉,最后一个问题,它不包含整个xml文档,而只包含包含中文字符的节点。。有什么想法吗?好吧,用xml文件的更多细节更新你的问题,或者在另一个问题中提问。看这个问题:中文字符是Unicode而不是utf8。@jdweng,我需要使用Unicode编码器吗?是的,你的字符串已损坏。解析方法使用字符串。如果您得到的是字符0x01,则表示字符串数据是使用非Unicode编码读取的。大多数文件/流方法默认为ASCII编码,这将损坏Unicode。确保用于读取文件/流的任何方法都具有Encoding.Unicode。@jdweng Unicode是字符集,UTF8是编码。两者不可比。UTF8将Unicode字符编码为二进制<编码>编码。Unicode实际上是UTF16。另外,几乎所有文件/流读取器/写入器在默认情况下都使用UTF8,而不是ASCII,