解决Volley接收数据、中文显示乱码问题。

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

解决方法:

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

    private class mJsonRequest extends JsonObjectRequest {

        /**
         * 

Description:{转码}

* @author:[email protected] * @see com.android.volley.toolbox.JsonObjectRequest#parseNetworkResponse(com.android.volley.NetworkResponse) */ @Override protected Response 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 listener, ErrorListener errorListener) { super(method, url, jsonRequest, listener, errorListener); } /** * @param url * @param jsonRequest * @param listener * @param errorListener */ public mJsonRequest(String url, JSONObject jsonRequest, Listener 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为乱码的数据。

你可能感兴趣的:(解决Volley接收数据、中文显示乱码问题。)