XML指南——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文档中使用属性声明设置编码格式。

(0)

相关推荐

  • XML指南——XML元素

    XML元素是可以扩展的,它们之间有关联. XML元素有简单的命名规则. XML元素是可以扩展的 XML文档可以被扩展一边携带更多的信息. 请看下面的XML便条例子: <note> <to>Lin</to> <from>Ordm</from> <body>Don't forget me this weekend!</body> </note> 让我们来设想一个能够读取此XML文档的并能解读其中XML元素(<

  • XML指南——XML 确认

    符合语法的XML文档称为结构良好的XML文档. 通过DTD验证的XML文档称为有效的XML文档. "结构良好的" XML文档 一个结构良好的XML文档应该使用正确的语法. 一个结构良好的XML文档应该遵守XML语法规则,前面一章给出的例子就是一个结构良好的XML文档: <?xml version="1.0" encoding="ISO-8859-1"?> <note> <to>Tove</to> &

  • XML指南——XML数据岛

    使用IE5.0或者更高的版本,XML数据可以以数据岛的形式嵌入HTML页面.  在HTML页面中嵌入XML数据  使用非官方标准的<xml>标记可以将XML数据嵌入到HTML页面中.  XML数据可以象下面的例子那样嵌入HTML页面:  <xml id="note">    <note>    <to>Tove</to>    <from>Jani</from>    <heading>Re

  • XML指南——XML 属性

    跟HTML一样,XML元素再开始标记处可以由元素属性. 属性通常包含一些关于元素的额外信息. XML属性 XML元素可以拥有属性. 你一定还记得这样的HTML代码吧: <IMG SRC="computer.gif">.src是img元素的属性,提供了关于img元素的额外信息. 在HTML中 (在XML中也一样)元素的属性提供了元素的额外信息. <img src="computer.gif"> <a href="demo.asp

  • XML指南——XML 浏览器(Netscape、Explorer)

    在我们这个XML指南里,我们把焦点放在Internet Explorer 5.0及其以后的版本上. Web站点上的XML 许多应用程序都支持XML.我们主要研究Internet Explorer 5.X+ 对此有些人可能会抱怨,但是我们只想把事情简单化,在网络环境中这时我们所知道的唯一一个真实测试XML例子的方法. XML Netscape 6 Netscape 6 支持 XML. 在Netscape 6中察看XML源文件可以在页面上点鼠标右键,然后选择"察看源文件". XML Int

  • XML指南——XML编码

    XML文档可以包含外文字符比如挪威语或者法语(中文当然也可以!这一部分还是不能照原文翻译,下面有些内容是我自己写的) 为了让你的解析器能够明白这些字符,你必须在XML文档中统一的字符编码标准. Windows 95/98 记事本 Windows 95/98 记事本不能以Unicode的编码格式保存文件. 可以使用记事本来编辑和保存包含了外文字符的XML文档 (比如:挪威语或者法语或者中文) <?xml version="1.0"?> <note> <fro

  • XML指南——XML CDATA

    在XML文档中的所有文本都会被解析器解析. 只有在CDATA部件之内的文本会被解析器忽略. -------------------------------------------------------------------------------- 解析数据 XML 解析器通常情况下会处理XML文档中的所有文本. 当XML元素被解析的时候,XML元素内部的文本也会被解析: <message>This text is also parsed</message> XML解析器这样做

  • XML指南——XML 语法

    XML的语法规则既简单又严格,非常容易学习和使用. 正因为如此,编写读取和操作XML的软件也是相对容易的事情. 一个XML文档的例子 XML文档使用了自描述的和简单的语法. <?xml version="1.0" encoding="ISO-8859-1"?> <note> <to>Lin</to> <from>Ordm</from> <heading>Reminder</he

  • 解析linq to xml操作XML的示例分析

    .Net中的System.Xml.Linq命名空间提供了linq to xml的支持.这个命名空间中的XDocument,XElement以及XText,XAttribute提供了读写xml文档的关键方法.1. 使用linq to xml写xml:使用XDocument的构造函数可以构造一个Xml文档对象:使用XElement对象可以构造一个xml节点元素,使用XAttribute构造函数可以构造元素的属性:使用XText构造函数可以构造节点内的文本.如下实例代码: 复制代码 代码如下: cla

  • C# XML操作 代码大全(读XML,写XML,更新,删除节点,与dataset结合等)第1/2页

    已知有一个XML文件(bookstore.xml)如下: Corets, Eva 5.95 1.插入节点 往节点中插入一个节点: 复制代码 代码如下: XmlDocument xmlDoc=new XmlDocument(); xmlDoc.Load("bookstore.xml"); XmlNode root=xmlDoc.SelectSingleNode("bookstore");//查找 XmlElement xe1=xmlDoc.CreateElement(

随机推荐