症状
当试图加载 XML 文件保存为 UTF-7 (Unicode 编码格式传送),Internet Explorer 的 XML 分析器将生成以下错误消息:
无效的文档的顶层。
使用 MSXML 解析器从服务器端或客户端脚本时,也会发生同样的错误。
原因
版本的 MSXML 2.6 之前 MSXML 解析器不支持 UTF-7。
解决方案
若要解决此问题,请保存为 UTF-8,XML 文档的首选的传输编码格式为 Unicode.MSXML 2.6 或更高版本支持 utf-7 编码。
状态
此行为是设计使然。
更多信息
Unicode 是统一字符集表示几乎世界上的所有语言,尽管有很多的字节表示形式或转换格式,可以使用 Unicode 文件。最流行的格式是 utf-8,表示为一至四个 8 位字节序列的 Unicode 字符。Utf-7 是定义为允许通过邮件网关采用 ASCII 和去除文本消息则高位的 Unicode 文本的 7 位转换格式。基于 XML 1.0 标准,部分 4.3.3,一个有效的 XML 文件将需要下列选项之一:
-
一个 Unicode utf-8 格式文件。
-
一个 Unicode utf-16 格式文件。
-
其第一次以字节形式具有一些其他的字符编码 (例如,ASCII) 中的文件
Utf-7 不使用字节顺序标记。此外,utf-7 转换的特殊 XML + ADw,最后 utf-7 的第一个字符的字符<编码的 XML 文档。由于这不符合 XML 标准,MSXML 拒绝加载此类文件。许多文本编辑器和字处理程序允许您保存 Unicode 文本的文件,称为编码文本在 Microsoft Word 中,在许多不同的传输编码,包括 utf-7。 因此,如果您为"编码文本 utf-7"在 Word 中保存文档,将拒绝 MSXML 加载它出于上述原因。
重现问题的步骤
-
在 Word 2000 中创建一个简单的 XML 文件:
<?xml version="1.0"?><MyTag><EmbeddedTag name1="value"/></MyTag>
-
将文件保存为编码文本。当 Word 询问您是否想要丢失格式时,请单击是。然后 Word 会提示您输入要使用的编码格式。选择UTF-7,然后再将文档另存为 cap 文件名称 TestUTF7.xml。
-
加载 cap 文件名称在 Internet Explorer 5 TestUTF7.xml。您将收到以下错误消息:
无效的文档的顶层。第 1 行,位置 1 + ADw? xml 版本 + AD0AIg-1.0 + ACI-? + AD4-。
参考
对于最新 Microsoft 全球软件开发http://www.unicode.org/的最新的 Unicode 标准。有关为 Microsoft Internet Explorer 开发基于 Web 的解决方案的详细信息,请访问下面的 Microsoft 网站:
http://msdn.microsoft.com/ie/ http://support.microsoft.com/iep(c) Microsoft 公司 2000 保留所有权利。由 Jay Andrew Allen,Microsoft 公司的贡献。