您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

关于xml里的encoding的详解

2024/3/20 8:16:49发布43次查看
前同天和同事在讨论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里的encoding的详解的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product