提问人:Niranjan 提问时间:4/22/2010 更新时间:4/22/2010 访问量:2315
解析使用 UTF-8 编码的 XML 文件时出现无效令牌错误
invalid token error while parsing an XML file with UTF-8 encoding
问:
使用 UTF-8 编码解析 XML 文件时出现无效令牌错误。
当它遇到扩展的 ASCII 字符 'â' { “â”, “â” } 时,会出现此错误。
当我将编码从 UTF-8 更改为 ISO-8859-1 时,解析成功。但我的应用程序应该支持 UTF-8、ASCII 和扩展的 ASCII 字符。我该怎么办?
欢迎任何想法。
提前感谢您的时间和解决方案。
答:
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提供的信息。
上一个:PHP 5 中的方法拦截。
下一个:如何使用 XmlPeek 任务?
评论