XML文件编码问题
这两天的过程中的一个项目,以解决编码格式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/
XML文件编码问题的更多相关文章
- web.xml文件--编码注意事项
写在前面: 最近发布项目的时候,要修改web.xml文件的内容,然后我在本机的web.xml文件中是有注释的,但是到了服务器上面,就说编码不同.我也没有怎么注意.就继续启动服务器,但是访问网站,一直报 ...
- PHP操作XML文件学习笔记
原文:PHP操作XML文件学习笔记 XML文件属于标签语言,可以通过自定义标签存储数据,其主要作用也是作为存储数据. 对于XML的操作包括遍历,生成,修改,删除等其他类似的操作.PHP对于XML的操作 ...
- SAXParser解析xml文件
对于xml的解析,这里学习并演示使用SAXParser进行解析的样例. 使用此种方法无法解析"gb2312"编码的xml文件,因此,此处xml文件编码设置为"UTF-8& ...
- Android -- 创建XML文件对象及其序列化, pull解析XML文件
1. 创建XML文件对象及其序列化 示例代码:(模拟以xml格式备份短信到SD卡) SmsInfo.java, bean对象 /** * 短信的业务bean * @author Administrat ...
- 上传XML文件字符编码问题
1.上传的XML文件的空格的字符编码和倒入到数据库的空格的字符编码不是一种编码格式,导致导入到数据库的数据和XML文件的数据不一致的情况,进而使展示到界面上的数据在进行搜索时不能搜索出来.解决办法: ...
- Python解析xml文件遇到的编码解析的问题
使用python对xml文件进行解析的时候,假设xml文件的头文件是utf-8格式的编码,那么解析是ok的,但假设是其它格式将会出现例如以下异常: xml.parsers.expat.ExpatErr ...
- pugixml读取unicode编码的xml文件的做法
作者:朱金灿 来源:http://blog.csdn.net/clever101 实际上在多字节编码的情况下,即以记事本打开显示的ANSI编码的,如下图: pugixml是可以直接读取中文字符的,示例 ...
- 使用Dom4j生成xml文件(utf-8编码)
xml文件内容: <?xml version="1.0" encoding="UTF-8"?> <result> <code> ...
- 用DOM和DOM4J写xml文件时,怎样设置xml文档的编码
//在将xml文档传输出去时,利用Transformer中的setOutputProperty方法 TransformerFactory trans = TransformerFactory.newI ...
随机推荐
- [PHP]利用MetaWeblog API实现XMLRPC功能
[PHP]利用MetaWeblog API实现XMLRPC功能 | OWNSELF [PHP]利用MetaWeblog API实现XMLRPC功能 Windows Live Writer是一款小巧的写 ...
- SQL Server Database 维护计划创建一个完整的备份策略
SQL Server维护计划Maintenance Plan这是一个非常有用的维护工具,能够完成大部分的数据库维护任务,通过这些功能包.您可以省略大量的编码时间. 介绍的不是非常多,特此补上一篇 ...
- C strstr() 函数
包含文件:string.h 函数名: strstr 函数原型:extern char *strstr(const char *str1, const char *str2); 语法:* strstr( ...
- Ubuntu 8.04下安装DB2方法
參考文献: How-to: Ubuntu 7.10 Server x86 32-bit and DB2 Express-C v9.5 DB2 v9.7 Infomation Center 场景:在IB ...
- C# Dictionary.Add(key,value) 与 Dictionary[key]=value的区别
1. MSDN上的描述. http://msdn.microsoft.com/zh-cn/library/9tee9ht2(v=VS.85).aspx 通过设置 Dictionary 中不存在的键值, ...
- CH BR4思考熊(恒等有理式-逆波兰表达式求值)
恒等有理式 总时限 10s 内存限制 256MB 出题人 fotile96 提交情况 4/43 描述 给定两个有理式f(X)与g(X),判断他们是否恒等(任意A,如果f(A)与g(A)均有定义,那么f ...
- Redis集群_3.redis主从自动切换Sentinel(转)
Redis SentinelSentinel(哨兵)是用于监控redis集群中Master状态的工具,其已经被集成在redis2.4+的版本中 一.Sentinel作用:1):Master状态检测 2 ...
- HTML学习笔记之中的一个(input文件选择框的封装)
方式一:直接透明隐藏 .file_button_container,.file_button_container input {background: transparent url(./img/BT ...
- Maven + Jetty + Jersey搭建RESTful服务
IntelliJ IDEA + Maven + Jetty + Jersey搭建RESTful服务 本文参考以下内容: 使用Jersey实现RESTful风格的webservice(一) Starti ...
- c/c++中main函数参数讲解
参考地址: http://blog.csdn.net/cnctloveyu/article/details/3905720 我们经常用的main函数都是不带参数的.因此main 后的括号都是空括号.实 ...