niaonao 2016-06-25 10:02 采纳率: 71.4%
浏览 3375
已结题

android 获取服务器返回的json 乱码

由安卓端发送带数据的请求,
服务器接收 json及解析都是正确的,
在返回 android 端之前控制台输出的也是正确的
到 android 端就乱码了
(本程序在英文状态下能正常显示使用,程序没问题)

(1. 发送请求前)
乱码1图片说明

(2. )
(3. 数据在服务器)
乱码2图片说明

(4. 安卓端再获取)
乱码3图片说明

部分处理代码,未成功解决问题

 JSONArray userarr = new JSONArray(userjson);
                JSONObject userobj = userarr.getJSONObject(0);

                byte[] byte1 = userobj.getString("gender").getBytes();
                String str1 = new String(byte1,"utf-8");
                Log.i(tag,"CLS: str1:"+str1+"$$$");

                String str4 = new String(byte1,"gbk");
                Log.i(tag,"CLS: str4:"+str4+"$$$");

                String str5 = new String(byte1,"gb2312");
                Log.i(tag,"CLS: str5:"+str5+"$$$");

                String gender2 = userobj.getString("gender");
                String str2 = new String(gender2.getBytes("utf-8"),"gbk");
                Log.i(tag,"CLS: str2:"+str2+"$$$");


                String str3 = new String(gender2.getBytes("utf-8"),"utf-8");
                Log.i(tag,"CLS: str3:"+str3+"$$$");
/*********************/
                /*****************************/
                String gender = userobj.getString("gender");
                String _gender = new String(gender.getBytes("iso-8859-1"),"gbk");    //编码解决3

                byte[] bytes = gender.getBytes();
                String str = new String(bytes, "gb2312");                           //编码解决4


                Log.i(tag,"CLS: _gender:"+_gender+"$$$");
                Log.i(tag,"CLS: str:"+str+"$$$");

对应结果:
处理图片说明

  • 写回答

4条回答 默认 最新

  • ziyejinwei1994 2016-06-27 07:42
    关注

    开发工具的编码进行设置成UTF-8了吗

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?