加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

XML文件的编码问题

发布时间:2020-12-15 22:42:34 所属栏目:百科 来源:网络整理
导读:这两天在项目处理一个解析编码格式为ANSI的xml文件时,遇到了一些问题,现将分析过程总结如下。 通过win7自带的记事本或者notepad++创建一个xml文件test_source: ?xml version="1.0" encoding="utf-16"?notenamecoffeecat/namechn"测试"/chn/note 可以看到

这两天在项目处理一个解析编码格式为ANSI的xml文件时,遇到了一些问题,现将分析过程总结如下。

通过win7自带的记事本或者notepad++创建一个xml文件test_source:

<?xml version="1.0" encoding="utf-16"?>
<note>
	<name>coffeecat</name>
	<chn>"测试"</chn>
</note>

可以看到在xml文件的第一行,声明编码格式为utf-16,也就是unicode,使用IE浏览器打开test_source失败,

通过Ultra Edit将上述已创建的xml另存为test_ue,在保存时,显式的设置编码为utf-16,通过浏览器却能直接打开,这是为什么?


在网上查阅了一些资料,问题可能出在xml文件头中声明的字符编码与实际保存文件的编码格式不符。

验证:

使用Ultra Edit将test_source和test_ue打开,并切换为十六进制编辑模式:

test_source:

test_ue:

其中前两位标示出了文件实际存储格式的不同,以3C 3F开头的文件为ANSI格式存储的文件,而以FF FE开头的文件是Unicode little endian格式存储的。

结论:

要成功使用IE浏览器打开xml文件,一定要确保xml文件的格式声明与实际存储格式一致,建议在编辑xml文件时,尽量使用Ultra Edit等专业的工具进行。如果不能确定文件期望的保存格式,可以将xml中的格式声明部分(encoding="utf-16")删掉,这样xml文件也可以在IE浏览器中打开。(可以暂时解决问题,但不建议,可能引起的问题未知)


额外的:

在工作中,碰到了需要解析一份ANSI编码格式的xml文件,如上述的test_source.xml,其中包含了中文字符。为了不影响解析的功能,无法通过Ultra Edit将其编码格式修改为Unicode,但是项目需要这份xml文件可以随时通过IE浏览器查看,该怎么办呢?

问题还是出在xml文件的格式声明上,既然实际文件为ANSI,与声明中的encoding="utf-16“不符,那么应该将声明的编码格式改为与ANSI一致的即可。既然要与包含中文的ANSI编码格式相符,自然想到了汉子编码字符集GB2312,将encoding="utf-16“修改为encoding="gb2312“,即可使用IE浏览器打开xml文件了。或者使用除了包含中文字符还包含繁体、日、韩文字字符的更全面的字符集GBK。


参考资料:

http://tjmljw.iteye.com/blog/1500370

http://ljhzzyx.blog.163.com/blog/static/3838031220129701845443/

http://www.52php.cn/article/p-dsktrwbc-bav.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读