解析使用 UTF-8 编码的 XML 文件时出现无效令牌错误

invalid token error while parsing an XML file with UTF-8 encoding

提问人:Niranjan 提问时间:4/22/2010 更新时间:4/22/2010 访问量:2315

问:

使用 UTF-8 编码解析 XML 文件时出现无效令牌错误。

当它遇到扩展的 ASCII 字符 'â' { “â”, “â” } 时,会出现此错误。

当我将编码从 UTF-8 更改为 ISO-8859-1 时,解析成功。但我的应用程序应该支持 UTF-8、ASCII 和扩展的 ASCII 字符。我该怎么办?

欢迎任何想法。

提前感谢您的时间和解决方案。

xml 解析

评论

1赞 skaffman 4/22/2010
使用什么? .net?爪哇岛?PHP的?巫毒魔法?

答:

1赞 Pete Kirkham 4/22/2010 #1

通过设置 XML 声明的 encoding 属性来告诉解析器 latin-1 文件是 UTF-8 将导致与您报告的错误类似的错误。

如果“â”字符 (U+00E2) 出现在 UTF-8 编码文件中,则该字符将在该文件中编码为两个字节的序列。因此,如果您在说要更改编码时没有更改文件中的字节,则不会更改文件的编码,而只是告诉解析器非 UTF-8 文件是 UTF-8。

评论

0赞 Niranjan 4/22/2010
谢谢皮特的回复。我该怎么做才能使 XML 文件通用,以便它不会为 UTF-8 和扩展 ASCII 字符抛出任何错误?
2赞 bobince 4/22/2010
不能,使用默认 UTF-8(或带 BOM 的 UTF-16)以外的编码的 XML 文件必须指定自己的编码;没有毛茸茸的“猜测 UTF-8,除非它不能,在这种情况下猜测其他东西”模式。你需要对负责生成具有非 UTF-8 字节序列的“XML”文件的人说严厉的话,而不为其指定一个,因为他们生成的内容绝不是有效的。<?xml encoding?>
0赞 Niranjan 4/22/2010
谢谢bobince提供的信息。