XML无效字符!

时间:2012-03-27 10:19:55

标签: c# xml linq linq-to-xml

我的角色一直无效!看起来像我正在处理的xml中的£符号。我得到“给定编码中的无效字符”。这是一个代码& xml片段。

<outputs>
<output id='1'>
<key><![CDATA[123]]></key>
<message id='84'>
<source><![CDATA[123]]></source>
<sender><![CDATA[Paul]]></sender>
<text><![CDATA[Testing Currency £7.50 $9.999 _]]></text>
</message>
</output>
</outputs>

我做的代码并不多。

       XDocument doc = XDocument.Load(xmlFileName);

我不改变编码或任何东西。有小费吗 ?。

4 个答案:

答案 0 :(得分:1)

如果加载XML文档,则可能会出现此编码问题:

在文字内容中找到了无效字符。

如果您的XML包含非ASCII字符,并且文件保存为单字节ANSI(或ASCII)且未指定编码,则会出现此错误。

Windows记事本默认将文件保存为单字节ANSI(ASCII)。

要解决您的问题,您可以使用 NotePad 打开xml,然后如果选择“另存为...”,则可以指定单字节Unicode(UTF-8),然后尝试重新加载XML。

enter image description here

答案 1 :(得分:1)

£符号的ASCII值为163(0xA3),UTF-8的代码为0xC2 0xA3(source)。

确保文件编码(似乎是ASCII)与使用带有编码参数的StreamReader加载XML文件的编码相匹配。

答案 2 :(得分:0)

不确定,为什么会出现此错误。

我已将您的XML复制到POC.XML文件中,并修改了此文件的构建属性以便始终复制。之后,下面的代码毫无例外地工作。

XDocument xodc = XDocument.Load("poc.xml");

答案 3 :(得分:0)

将xml标头添加到您的文件中以指定编码方法&lt; ?xml version =&#34; 1.0&#34;编码=&#34; UTF-8&#34;&GT;