欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

XML指南——XML编码

程序员文章站 2022-06-10 14:36:03
   xml文档可以包含外文字符比如挪威语或者法语(中文当然也可以!这一部分还是不能照原文翻译,下面有些内容是我自己写的) 为了让你的解析器能够明白...
  
xml文档可以包含外文字符比如挪威语或者法语(中文当然也可以!这一部分还是不能照原文翻译,下面有些内容是我自己写的)
为了让你的解析器能够明白这些字符,你必须在xml文档中统一的字符编码标准。



windows 95/98 记事本
windows 95/98 记事本不能以unicode的编码格式保存文件。
可以使用记事本来编辑和保存包含了外文字符的xml文档 (比如:挪威语或者法语或者中文)
<?xml version="1.0"?>
<note>
<from>小奀</from>
<to>小林</to>
<message>晚上一起去火锅呀</message>
</note>


但是如果你用浏览器打开这个用记事本编辑过的xml文档,将会出现一个错误open it with ie 5.0。



在windows 95/98 记事本中使用编码
windows 95/98 记事本编辑xml文件必须进行编码属性设置。 
为了避免发生错误,可以在xml文档声明中加上一个encoding属性,指明此xml文档的编码类型,但是不要使用unicode编码。 
下面的编码类型不会导致错误, 并且汉字显示正常:
<?xml version="1.0" encoding="gb2312"?>


下面的编码类型不会导致错误, 并且汉字显示正常:
<?xml version="1.0" encoding="gbk"?>


下面的编码类型不会导致错误, 并且汉字显示不正常(乱码):
<?xml version="1.0" encoding="windows-1252"?>


下面的编码类型不会导致错误, 并且汉字显示不正常(乱码):
<?xml version="1.0" encoding="iso-8859-1"?>


下面的编码类型不会导致错误,并且汉字显示正常:
<?xml version="1.0" encoding="utf-8"?>


下面的编码类型会导致错误:
<?xml version="1.0" encoding="utf-16"?>





使用windows 2000 记事本
windows 2000 记事本可以以unicode编码格式保存文件。
windows 2000 的记事本支持unicode字符集。如果使用win2000的记事本以unicode的编码格式保存xml文档(请注意这里在xml声明中没有编码信息):
<?xml version="1.0"?>
<note><from>小奀</from><to>小林</to><message>晚上一起去火锅呀</message></note>


下面这个文件; note_encode_none_u.xml, 在ie5.0+中将不会出现错误,但如果你使用网景netscape 6.2,就可能出错。读者比较 note_encode_none.xml 和 note_encode_none_u.xml这两个文件,如果单独看他们各自的源文件,是没有区别的,但为什么一个能显示,一个不能显示呢?答案就是unicode字符集。



windows 2000 记事本编码
windows 2000记事本还可以以"utf-16"编码格式保存文件。
如果你在xml文档中声明了编码属性而又以unicode编码格式保存文件,将可能发生错误。
下面的代码将会导致错误:
<?xml version="1.0" encoding="windows-1252"?>


下面的代码将会导致错误:
<?xml version="1.0" encoding="iso-8859-1"?>


下面的代码将会导致错误:
<?xml version="1.0" encoding="utf-8"?>


下面这个文件; note_encode_utf16_u.xml, 将会在ie5.0+中显示正常,在网景netscape 6.2浏览器中将会出现错误。
<?xml version="1.0" encoding="utf-16"?>





错误信息
当时用ie5.0或者更高版本浏览xml文档时,可能会遇到两中不同的编码错误:
在文本内容中发现一个非法字符(an invalid character was found in text content)。
如果你的xml文档和你的xml文档的编码格式不匹配就可能导致错误发生。通常情况是,xml文档包含一些“非英文”字符,并且使用了单字节编码的编辑器,而且没有在xml文档的声明中设置xml文档的编码格式。 

不支持从当前的编码格式转换成另一种编码格式(switch from current encoding to specified encoding not supported)。
如果xml文档以unicode/utf-16编码格式保存,但是xml文档的声明中却设置了编码格式是一些单字节的编码(比如 windows-1252, iso-8859-1 或者  utf-8);或者xml文档以单字节编码格式保存,但是xml文档的声明中却设置了编码格式是一些unicode/utf-16的编码形式,这样两种情况都会导致错误发生。



结论
结论:在保存xml文档之前在xml文档的声明中设置文档的编码格式,我的一些关于避免错误发生的建议:
使用一种支持unicode编码格式的编辑器。 
确信你知道自己正在使用那种编码格式。 
在xml文档中使用属性声明设置编码格式。