Android访问服务器返回中文乱码

来源:互联网 发布:闲鱼淘宝介入怎么评判 编辑:程序博客网 时间:2024/06/06 18:18

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"><span style="white-space:pre"></span>最近在写一个Android项目,其中要用到HttpClient。不论是使用HttpGet,还是HttpPost,访问服务器的返回数据中,所有的中文均为乱码。试过多种方法均不能转码成功显示。</span>

试过的方法有以下几种:

1、使用URLEncoder.encode(str,"utf-8")对包含乱码的字符串str进行转码。

2、使用URLDecoder.decode(str,"utf-8")对包含乱码的字符串str进行转码。

3、将字符串str转换字符格式,然后将字符数组的每个字符取出进行转码。

<span style="white-space: pre;"></span><span style="font-size:24px;">Byte[] data=str.getByte();</span>

这些方法都没有起到作用。

最后,我想到,含有乱码的字符串产生于

<span style="white-space:pre"></span>String str= EntityUtils.toString(response.getEntity());

这句代码产生中文的乱码,那么可以在Android studio中按住住Ctrl点击查看EntityUtils的源码。我看到,EntityUtils的toString方法有两个,区别就在于还有一个是两个参数

<span style="white-space:pre"></span>EntityUtils.toString(HttpEntity entity, String defaultCharset);

第二个参数就是我们的utf-8,我们要转码的目标。

<p>于是,将项目中的</p><pre name="code" class="java" style="font-size:24px;"><span style="white-space:pre"></span>String str= EntityUtils.toString(response.getEntity());
替换为
<pre name="code" class="java"><pre name="code" class="java" style="font-size:24px;"><span style="font-family:Arial, Helvetica, sans-serif;"></span><pre name="code" class="java"><span style="white-space:pre"></span>String str= EntityUtils.toString(HttpEntity entity, String defaultCharset);


那么问题解决了。                                             
0 0