之前明白的是,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的详解的细致内容,更多请关注ki4网别的相干文章!