Volley解决接收数据出现中文显示乱码问题

Volley接收数据后,若收到的数据header内无charset定义,则使用其默认的”ISO-8859-1″格式进行解析,导致乱码出现。

解决方法:

1. 自定义request,重写parseNetworkResponse方法:

 
private class mJsonRequest extends JsonObjectRequest {  
  
        /** 
         * <p>Description:{转码}</p> 
         * @author:yangbiyao@163.com 
         * @see com.android.volley.toolbox.JsonObjectRequest#parseNetworkResponse(com.android.volley.NetworkResponse) 
         */  
        @Override  
        protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {  
            try {  
                response.headers.put("HTTP.CONTENT_TYPE", "utf-8");  
//                String jsonString = new String(response.data, HttpHeaderParser.parseCharset(response.headers));  
                String jsonString = new String(response.data,"utf-8");  
                return Response.success(new JSONObject(jsonString), HttpHeaderParser.parseCacheHeaders(response));  
            }  
            catch (UnsupportedEncodingException e) {  
                return Response.error(new ParseError(e));  
            }  
            catch (JSONException je) {  
                return Response.error(new ParseError(je));  
            }  
        }  
  
        /** 
         * @param method 
         * @param url 
         * @param jsonRequest 
         * @param listener 
         * @param errorListener 
         */  
        public mJsonRequest(int method, String url, JSONObject jsonRequest, Listener<JSONObject> listener,  
                ErrorListener errorListener) {  
            super(method, url, jsonRequest, listener, errorListener);  
        }  
  
        /** 
         * @param url 
         * @param jsonRequest 
         * @param listener 
         * @param errorListener 
         */  
        public mJsonRequest(String url, JSONObject jsonRequest, Listener<JSONObject> listener,  
                ErrorListener errorListener) {  
            super(url, jsonRequest, listener, errorListener);  
        }  
  
    }  

 
String jsonString = new String(response.data,"utf-8");  

在此转为我们想要的utf-8格式即可。

方法 2:

直接将数据转码为我们想要的utf-8(或GBK):

new String(data.getBytes(“ISO-8859-1″),”utf-8”)

data为乱码的数据。

关注公众号回复“小程序”获取1000个小程序打包源码。回复“大数据”获取多本大数据电子书

发表评论

电子邮件地址不会被公开。 必填项已用*标注