Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1219047
  • 博文数量: 233
  • 博客积分: 6270
  • 博客等级: 准将
  • 技术积分: 1798
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-26 08:32
文章分类

全部博文(233)

文章存档

2011年(31)

2010年(202)

我的朋友

分类: 系统运维

2011-01-11 17:40:44

【题外话,By 果壳】在android上实现解析XML的时候出现了中文节点数据无法正常获取的错误。在分析XML源文件是发现,汉字使用的表示方法是“&#xXXXX;”,即下面的第三种表示方式,所以死活解析不正确。检查该文件是发现该XML的文件头如下:

经过修正,把该文件头改为:

xml version="1.0" encoding="UTF-8" ?>

此时,汉字按方式一存储,问题解决。

以下内容为转载,以备查阅。

 WML是XML的一种应用,而XML的缺省编码是UTF-8,也就是Unicode的8位编码方式。如果不特殊说明,那么XML将认为采用的是UTF-8的编码方式。这就造成了一个问题,几乎所有的文档内容都采用了GB2312方式,数据库中也不例外。而Unicode和GB2312的编码有很大的不同,可以说根本不一样,这是造成乱码的主要原因。
    任何编码方式,包括日文、韩文、希腊文、阿拉伯文等都能轻松转换成Unicode。如果使用Unicode,就可以在同一段文档中加入各种语言。虽然现有的应用软件很少采用Unicode,但Windows NT的内核却采用Unicode来处理字符。Unicode方式有两个吸引人的个性:独立且宽容。
如何解决这些问题,现在常用的有以下的四种方法。

  • 直接采用UTF-8编码

        这种方法无需多讲。如果内容可以轻易转换到UTF-8编码还需要什么呢?坏处是需要对内容要进行全面的转换,而且与现有的大多数应用不兼容。

  • 直接使用GB2132编码

        这种方法也很简单,在编码声明时,标注采用GB2312编码方式,具体做法如:。但是并不是所有终端都支持GB2132编码,仍然会出现乱码。
        笔者做开发的时候就是采用这种办法解决中文问题。当时公司采用的是Motorola公司的网关,使用Motorola L2000www、Nokia 7110和Simens 3568i进行测试。结果都十分满意。
        如果使用这样的页面在Nokia WAP Toolkit上直接进行测试,将会发现Nokia WAP Toolkit将对中文进行自动编码,只是按照半个字节进行处理。因此出来之后就变成乱码了。

  • 采用字符转换

        其思想是用ASCII字符表现更大字符集中的字符。比如要展现希腊文的小写的alpha。alpha在Unicode的编码中是945,16进制就是3B1,于是写下“α”或者“α”显示的就是小写的“α”。只需要知道汉字的Unicode编码,将其转换成“&#xXXXX;”的形式。用ASCII编码方式,任何平台都能处理,而且HTML也支持。但是这样就增加了文件长度。

  • 配置应用服务直接输出UTF-8编码(适用于IIS)

        在IIS的Response Object有一个属性CharSet,按微软的说法只要这么做就行:
                <% Response.Charset("UTF-8") %>
        这种方法,只适用于Windows NT下IIS的ASP编程。其他的平台和Web服务器就没有如此简单的方式。

阅读(2200) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~