`

关于xml里的encoding【转】

    博客分类:
  • xml
xml 
阅读更多
转自:
http://www.cnblogs.com/azol/articles/1137035.html

前同天和同事在讨论xml里的encoding属性和文件格式的关系,终于彻底的弄清楚了。
以前理解的是,xml里的encoding里定义必须与文件格式相匹配。即有这样的xml Introduction<? xml encoding="utf-8" .. ?>,那么,文件格式必须是一个utf-8文件,即文件的前两个字节要是一个utf-8头FF FE。(后来才弄清楚,FF FE不是utf-8的BOM。。就是说我的错误理解持续了相当长一段时间。。)
下面把讨论的几个阶段大概说一下。
刚开始讨论时,我很肯定的告诉他,encoding的值必须和文件格式(即BOM,BOM就是 byte order mark的缩写)相匹配,不然在解析XML时,可能会出现(比如文档含有某个UNICODE字符,而encoding或BOM指定的格式不匹配,就会出错,当时我是这样的意思),然后他又告诉我,好像不是这样,我用DELPHI创建的XML文件,没有BOM,XML里面有中文内容,encoding里指定的是UTF-8,用IE可以正常打开啊。
他在发现他所创建的XML文件没有BOM时,有个有趣的地方,就是用UE打开这类含有UNICODE字符的文件时,UE会自动在文件前面加上FF FE,使得文件可以正常显示,所以原本没有BOM的文件,在UE下的十六进制下浏览,会看到多了个BOM,这个功能可以在UE的OPTIONS里去掉的,想知道的可以自己去找找。
然后我有点大头了,怎么会这样呢,然后想啊想,突然他发了一条信息过来,内容如下:

W3C定义了三条XML解析器如何正确读取XML文件的编码的规则:
1,如果文挡有BOM(字节顺序标记,一般来说,如果保存为unicode格式,则包含BOM,ANSI则无),就定义了文件编码
2,如果没有BOM,就查看XML声明的编码属性
3,如果上述两个都没有,就假定XML文挡采用UTF-8编码

有了这三条规则,那这个规则就清楚多了。
首先,XML解析器根据文件的BOM来解析文件;如果没找到BOM,由用XML里的encoding属性指定的编码;如果xml里encoding没指定的话,就默认用utf-8来解析文档。然后又可以推出,BOM和ENCODING都有的话,则以BOM指定的为准。
啊!突然觉得有标准文档多好!虽然是那么的理所当然。
至此,终于把xml里的encoding和文件格式的关系弄懂了。虽然这篇记录只有那几百个字内容,但是我们当时在讨论的时候,总时间差不多花了2个小时。
分享到:
评论

相关推荐

    脚本可以批量去除XML文件中的<?xml version=“1.0“ encoding=“utf-8“?>

    脚本可以批量去除XML文件中的<?xml version=“1.0“ encoding=“utf-8“?>

    2017XML字符串转对象Object 实现工具

    xml version="1.0" encoding="UTF-8"?&gt; &lt;HEADER NAME="HEADERname" name_cn="头名称"&gt;标签text值 版本号 时间 地址 &lt;/HEADER&gt; &lt;BODY&gt; 红豆 &lt;RMB&gt;10元 芋头 &lt;RMB&gt;100元 ...

    连接DB2时“encoding not supported”问题解决

    NULL 博文链接:https://lectery.iteye.com/blog/485357

    XML 指南XML 实例XML 测验XML 基础

    &lt;?xml version="1.0" encoding="ISO-8859-1"?&gt; &lt;?xml-stylesheet type="text/css" href="cd_catalog.css"?&gt; &lt;TITLE&gt;Empire Burlesque &lt;ARTIST&gt;Bob Dylan &lt;COUNTRY&gt;USA &lt;COMPANY&gt;Columbia &lt;PRICE&gt;10.90 &lt;YEAR&gt;1985 ...

    xml入门教程/xml入门教程

    如:&lt;?xml version="1.0" encoding="gb2312" standalone="yes"?&gt; 文档类型声明 规定元素的结构和属性列表的取值 如:&lt;!DOCTYPE studinfo SYSTEM "studinfo.dtd"&gt; 2)元素 空元素 &lt;空元素标签名 属性=...

    txt 数据转换为 xml数据 C#编写的小工具

    &lt;?xml version=/'1.0/' encoding=/'gbk/'?&gt; &lt;name score age &gt;name score age &lt;name score age &gt;d1 61 6 &lt;name score age &gt;d2 72 7 &lt;name score age &gt;d3 83 8 &lt;name score age &gt;d4 49 9 ...

    xml文件生成类XmlTextWriter的使用

    xml version="1.0" encoding="gb2312"?&gt; &lt;TestID&gt;201603150001 爵士乐 &lt;Name&gt;Cecil Taylor 女 &lt;BirthDate&gt;1988/10/7 &lt;IdNumber&gt;11233219990909999X &lt;Nation&gt;&lt;/Nation&gt; &lt;CardAddr&gt;Nefertiti, The ...

    DIXML v5.9.0 for D6-XE10.1 XML XSLT EXSLT 解析

    Encoding support for UTF-8, UTF-16, ISO-8859-family, ASCII (all native). XPATH processing. NameSpace support. XSLT transformation and processing. File, memory, and customized input / output. Low ...

    xml解析器失败方法

    xml解析器失败时候可以尝试打开开始-运行-cmd 输入命令来进行解决

    全国省区市的xml文件

    全国省区市的xml文件 encoding="utf-8

    javax.xml.rpc相关jar包

    解决javax.xml jar包缺失的问题,引进javax.xml.rpc-api-1.1.1.jar

    XMLwriter

    软件介绍: 一个强而有力的 XML 编辑工具,可以... 要在主窗口编辑时正确显示中文, 记得要加入 encoding="gb2312", 如 &lt;?xml version="1.0" encoding="gb2312"?&gt; 6. 不多讲了, 希望此汉化版对你有所帮助 :)

    一个C#处理XML的类

    /// 适应用Xml:&lt;?xml version="1.0" encoding="utf-8" ?&gt; /// &lt;root&gt; /// &lt;dns1&gt;ns1.everdns.com&lt;/dns1&gt; /// &lt;/root&gt; /// /// 使用示列: /// using Serial; //引用命名空间 /// string xmlPath = ...

    Tinyxml 源代码(VC6 & VS2005)

    通过使用LoadFile( TIXML_ENCODING_LEGACY )或者LoadFile( filename, TIXML_ENCODING_LEGACY ), 你可以强制TinyXML使用Legacy模式。你也可以通过设置TIXML_DEFAULT_ENCODING = TIXML_ENCODING_LEGACY来强制一直使用...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    XML越来越热,关于XML的基础教程网络上也随处可见。可是一大堆的概念和术语往往让人望而生畏,很多朋友问我:XML到底有什么用,我们是否需要学习它?我想就我个人学习过程的心得和经验,写一篇比较全面的介绍文章。...

    XML习题集(选择、填空、判断和编程题)

    有关XML的习题,主要有填空,选择,判断和编程题,包含了XML的大部分知识。每一题都有详细的答案。

    txt csv数据转换为 xml数据 C#编写的小工具

    &lt;?xml version=/'1.0/' encoding=/'gbk/'?&gt; &lt;name score age &gt;name score age &lt;name score age &gt;d1 61 6 &lt;name score age &gt;d2 72 7 &lt;name score age &gt;d3 83 8 &lt;name score age &gt;d4 49 9 ...

    java_dom解析xml xml java

    xml version="1.0" encoding="UTF-8"?&gt; &lt;Head&gt; &lt;FileVersion&gt;010000&lt;/FileVersion&gt; &lt;FileLength&gt;00000CC3&lt;/FileLength&gt; &lt;FileTime&gt;20100629173405&lt;/FileTime&gt; &lt;KeyIndex&gt;1&lt;/KeyIndex&gt; &lt;/Head...

    从XML读取、写入配置

    从XML读取、写入配置 许多程序在使用,向一个输入框中输入了某些信息;即使关闭了程序,当再次打开时,你仍然可以看见输入框中的信息没有消失,被...&lt;?xml version="1.0" encoding="utf-8"?&gt; 。。。。。。。。。。。。

    XML VC 简单实例

    使用VC解析XML的一个简单实例 &lt;?xml version="1.0" encoding="UTF-8"?&gt;

Global site tag (gtag.js) - Google Analytics