模拟器中文乱码问题

本文探讨了在实现阅读器功能过程中遇到的字符乱码问题,包括从服务器获取内容时的编码处理、无效Unicode字符的过滤及特定字符在Android模拟器上的显示问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在做一个阅读器功能的项目,遇到某些字符显示乱码的问题。

具体有三部分:

1、采用org.apache.http.*、org.apache.http.params.*、org.apache.http.util.*包下的Header、HttpEntity、HttpResponse、HttpParams等类进行网络连接时。需要从服务器获取到返回的内容。

 

 

HttpEntity org.apache.http.HttpResponse.getEntity()

 

public abstract HttpEntity getEntity ()
Since: API Level 1

Obtains the message entity of this response, if any. The entity is provided by calling setEntity.

 

通过上述api获取响应的消息实体,返回的HttpEntity对象。我们需要通过EntityUtils的工具方法将该对象转换为我们所需要的对象。

 

转换成byte数组:

byte[] org.apache.http.util.EntityUtils.toByteArray(HttpEntity entity) throws IOException

 

public static byte[] toByteArray (HttpEntity entity)

 

转换成String对象:

String org.apache.http.util.EntityUtils.toString(HttpEntity entity) throws IOException, ParseException

 

public static String toString (HttpEntity entity)

但是此处建议使用第一种方式,转换成byte数组,因为调用toString可能会导致某些中文字符出现乱码的情况。如果需要转成String对象,可以先调用EntityUtils.toByteArray()方法将消息实体转成byte数组,在由new String(byte[] bArray)转换成字符串。

 

2、某些unicode码对应的字符并没有实质的显示内容,即无效字符。该类字符在ie上不显示出来(说明ie做过一些特殊处理),但在android模拟器上却显示出乱码(具体为小空框)。详情见:http://unicode.coeurlumiere.com/?n=57344

因此在显示时,需要排除掉这些字符,否则就显示乱码。

 

3、android模拟器对某些特殊字符不支持的情况,如某些繁体中文,如“紭”。该字符在模拟器上就显示为乱码(具体为小空框)。个人认为是该模拟器的字库支持不全导致的(仅代表个人观点,并未深入验证)。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值