Android http get请求里中文是乱码的解决(其中一种情况)

  • Post author:
  • Post category:其他


最近在进行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));
 }

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

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();
        }
}

通过比较可以得出,data字符串进行了

URLEncoder.encode(data, “utf-8”)

的处理,之后再进行拼接,就不再是???这样的乱码了。

出现乱码可能会有多种情况,我这篇文章说的是其中的一种,也就是我自己遇到的一个问题。在这里我当做一个小tip记录下来,以供自己以后查阅,也希望能对遇到类似问题的朋友有一些帮助~



版权声明:本文为y505772146原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。