XML 编码
XML 文档可能包含外国字符,比如挪威语,或者法语。
为了让 XML 解析器读懂这些字符,您需要把 XML 文档存为 Unicode。
Windows 2000 记事本
Windows 2000 记事本可以把文件保存为Unicode。
将XML文件保存为 Unicode(注意,此文档未包含任何编码属性):
<?xml version="1.0"?> <note> <from>John</from> <to>George</to> <message>French: êèé</message> </note>
上面的文件,note_encode_none_u.xml,在 IE 5+、Firefox 或者 Opera 中不会出错,但是在 Netscape 6.2 中会出错。
Windows 2000 Notepad with Encoding
Windows 2000 记事本使用 "UTF-16" 编码将文件保存为 Unicode。
如果您为保存为 Unicode 的 XML 文件添加了一个编码属性,windows 的编码值可能产生错误。
下面的编码(打开它),不会报错:
<?xml version="1.0" encoding="windows-1252"?>
下面的编码(打开它),不会报错:
<?xml version="1.0" encoding="ISO-8859-1"?>
下面的编码(打开它),不会报错:
<?xml version="1.0" encoding="UTF-8"?>
下面的编码(打开它),在 IE 5+、Firefox 或者 Opera 重不会发出错误信息,但是在 Netscape 6.2 中会报错。
<?xml version="1.0" encoding="UTF-16"?>
错误消息
如果您试图向 IE 中载入 XML 文档,可能会得到两种指示编码问题的错误:
在文本内容中发现非法字符
如果 XML 文档中的某个字符与编码属性不匹配,您就会得到这个错误消息。通常,当 XML 文件中含有外国字符,且当文件使用类似记事本的单字节编码编辑器保存,以及没有指定编码属性时,您就会得到这个错误消息。
将当前编码切换为不被支持的指定编码
如果您的文件被保存为 Unicode/UTF-16,但是编码属性被指定为单字节编码(比如 Windows-1252、ISO-8859-1 或者 UTF-8)时,那么您就会得到这个错误消息。或者当您的文档被保存为单字节编码,但编码属性被指定为双字节编码(比如 UTF-16)时,也会得到这个错误消息。
结论
结论是:编码属性应当被指定为文档被保存时所使用的编码。我最好的避免错误的建议是:
- 使用支持编码的编辑器
- 确定编辑器使用的编码
- 在您的 XML 文档中使用相同的编码属性