4

我昨天问了这个问题并得到了答复。

为变音符号写入编码值

在代码中,如果它是这样的字符串,则 parse 方法可以工作:

XDocument xDoc = XDocument.Parse("<description>Top Shelf-ÖÄÜookcase</description>");

要将输入的 xml 文件作为字符串传递,我必须先阅读它。如果输入 xml 中有变音符号,则读取方法将失败。我该如何克服呢?

尝试了 XDocument 的 Load 和 Parse 方法。

加载:给定编码中的无效字符。第 3 行,位置 35。解析:根级别的数据无效。第 1 行,位置 1。

这是使用 CDATA 后的示例 xml:

<?xml version="1.0" encoding="utf-8"?>
<kal>
 <description><![CDATA[Top Shelf-ÖÄÜookcase]]> </description> 
</kal>
4

3 回答 3

4

将编码更改为“iso-8859-1”

于 2013-10-23T13:32:29.033 回答
0

您是否尝试过用CDATA包装描述数据?

<description><![CDATA[Top Shelf-ÖÄÜookcase]]> </description>

除非使用 CDATA 包装特殊字符,否则 XML 中的特殊字符无法很好地解析。

于 2012-08-02T07:03:04.573 回答
0

正如Besi所说,您必须使用正确的 xml 文件编码才能正确处理变音符号。

即使您说传入的 xml 文件的创建不在您手中,您仍然可以通过使用专用的来影响用于解析 xml 的编码StreamReader

//  create your XDocument
XDocument Doc;

//  setup a StreamReader for your file, specifying the encoding you need
using (StreamReader Reader = new StreamReader(@"C:\your-file.xml", System.Text.Encoding.GetEncoding("ISO-8859-1")))
{
    //  PARSE the STRING that is RETURNED from the StreamReader.ReadToEnd()-method
    Doc = XDocument.Parse(Reader.ReadToEnd());
}
于 2015-09-17T09:37:14.143 回答