这两天的过程中的一个项目,以解决编码格式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://blog.csdn.net/chaijunkun/article/details/4654397

XML文件编码问题的更多相关文章

  1. web.xml文件--编码注意事项

    写在前面: 最近发布项目的时候,要修改web.xml文件的内容,然后我在本机的web.xml文件中是有注释的,但是到了服务器上面,就说编码不同.我也没有怎么注意.就继续启动服务器,但是访问网站,一直报 ...

  2. PHP操作XML文件学习笔记

    原文:PHP操作XML文件学习笔记 XML文件属于标签语言,可以通过自定义标签存储数据,其主要作用也是作为存储数据. 对于XML的操作包括遍历,生成,修改,删除等其他类似的操作.PHP对于XML的操作 ...

  3. SAXParser解析xml文件

    对于xml的解析,这里学习并演示使用SAXParser进行解析的样例. 使用此种方法无法解析"gb2312"编码的xml文件,因此,此处xml文件编码设置为"UTF-8& ...

  4. Android -- 创建XML文件对象及其序列化, pull解析XML文件

    1. 创建XML文件对象及其序列化 示例代码:(模拟以xml格式备份短信到SD卡) SmsInfo.java, bean对象 /** * 短信的业务bean * @author Administrat ...

  5. 上传XML文件字符编码问题

    1.上传的XML文件的空格的字符编码和倒入到数据库的空格的字符编码不是一种编码格式,导致导入到数据库的数据和XML文件的数据不一致的情况,进而使展示到界面上的数据在进行搜索时不能搜索出来.解决办法: ...

  6. Python解析xml文件遇到的编码解析的问题

    使用python对xml文件进行解析的时候,假设xml文件的头文件是utf-8格式的编码,那么解析是ok的,但假设是其它格式将会出现例如以下异常: xml.parsers.expat.ExpatErr ...

  7. pugixml读取unicode编码的xml文件的做法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 实际上在多字节编码的情况下,即以记事本打开显示的ANSI编码的,如下图: pugixml是可以直接读取中文字符的,示例 ...

  8. 使用Dom4j生成xml文件(utf-8编码)

    xml文件内容: <?xml version="1.0" encoding="UTF-8"?> <result> <code> ...

  9. 用DOM和DOM4J写xml文件时,怎样设置xml文档的编码

    //在将xml文档传输出去时,利用Transformer中的setOutputProperty方法 TransformerFactory trans = TransformerFactory.newI ...

随机推荐

  1. hdu 1392(凸包)

    传送门:Surround the Trees 题意:求凸包的周长. 分析:凸包模板题,先按极角排好序后,然后根据叉积正负确定凸包. #include <stdio.h> #include ...

  2. c++中sort()及qsort()的使用方法总结

    当并算法具体解释请见点我 想起来自己天天排序排序,冒泡啊,二分查找啊,结果在STL中就自带了排序函数sort,qsort,总算把自己解脱了~ 所以自己总结了一下,首先看sort函数见下表:   函数名 ...

  3. UNIX高级环境编程1

    UNIX高级环境编程1 故宫角楼是很多摄影爱好者常去的地方,夕阳余辉下的故宫角楼平静而安详. 首先,了解一下进程的基本概念,进程在内存中布局和内容. 此外,还需要知道运行时是如何为动态数据结构(如链表 ...

  4. ftk学习记(waitbox篇)

    [声明:版权全部.欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 前面说到了脚本.那么就看看ftk中demo与script搭配的效果是什么样的? 上面的效果图就相 ...

  5. Mac中如何写NTFS的移动硬盘

    Mac中如何写NTFS的移动硬盘 按 照网上的说法,简单的就是购买Paragon NTFS或者Tuxera NTFS之类的收费软件,不想花钱的就用NTFS-3G.作为一个开发人员,既然能够自己解决,当 ...

  6. Cocos2d-X研究之v3.x瓦片地图具体解释

    在游戏开发过程中,我们会遇到超过屏幕大小的地图,比如即时战略游戏,使得玩家能够在地图中滚动游戏画面.这类游戏一般会有丰富的背景元素,假设直接使用背景图切换的方式,须要为每一个不同的场景准备一张背景图, ...

  7. CheckBox和控件Foreach循环

    .aspx代码例如以下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Sam ...

  8. CSharp Oracle 登陆

    =======后台Oracle存储过程================ 1.创建表 --判读表存在先删除begin    EXECUTE IMMEDIATE 'DROP TABLE student'; ...

  9. OpenCV基础篇之画图及RNG随机数对象

    程序及分析 /* * FileName : random_gen.c * Author : xiahouzuoxin @163.com * Version : v1.0 * Date : Tue 29 ...

  10. hdu4635(最多加多少边,使得有向图不是强连通图)

    连边的最后肯定是两个集合x,yx集合的每个元素,到y集合中的每个元素都是单向的边x集合,和y集合都是完全图设a为x集合的点的个数, b为y集合的那么答案就是 a * b + a*(a-1) + b*( ...