模拟器中文乱码问题

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

具体有三部分:

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

 

 

 

你可能感兴趣的:(android,String,api,header,服务器,byte)