Android 4.4 网络get请求出现中文乱码 导致服务器无法对传输的数据进行解析

最近在进行Android开发的过程中,发现了一个问题,特意在这里记录一下。下面我来描述一下这个问题:当我在Android 4.4版本进行http get请求的时候,我的get请求链接里的中文字符串显示为???,导致服务器不能正常识别我的参数,从而使程序运行出错(并不是所有的Android设备都会出错,我的这种情况仅在Android版本为5.0以下的设备上出现了)。 
具体的情况如下图: 
 
在上图可以看出,data参数本来是一个中文字符串,但是却变成了???,导致服务器那边接受到参数不能识别。 
从图中看出,我的content-type里已经包括了UTF-8编码,但是依旧显示的是乱码。一般情况下,出现这种中文乱码都是由于编码导致的。经过测试和查阅资料,我在进行我的网络请求之前,也就是在拼接我的url之前对我们的中文参数进行编码,就可以解决这个问题。 
下面我把自己修改前后的代码贴出来(在进行网络请求之前的url拼接阶段): 
这是之前出错的代码:

 public void getAutoCompleteInfo(String data, SingleServiceState listener) {
        this.listener = listener;
        String url = URL.AUTO_COMPLETE + "?data=" + data + "&types=3,4,5";
        QueueHelpter.add(NetHelper.get(url, JsonArray.class, this));
 }12345

这是修改之后正确的代码:

public void getAutoCompleteInfo(String data, SingleServiceState listener) {
        try {
            this.listener = listener;
            String s = URLEncoder.encode(data, "utf-8");
            String url = URL.AUTO_COMPLETE + "?data=" + s + "&types=3,4,5";
            QueueHelpter.add(NetHelper.get(url, JsonArray.class, this));
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
}12345678910

通过比较可以得出,data字符串进行了URLEncoder.encode(data, “utf-8”)的处理,之后再进行拼接,就不再是???这样的乱码了。 
出现乱码可能会有多种情况,我这篇文章说的是其中的一种,也就是我自己遇到的一个问题。

你可能感兴趣的:(Android 4.4 网络get请求出现中文乱码 导致服务器无法对传输的数据进行解析)