在Android应用程序和服务之间交换unicode字符

时间:2014-11-17 12:58:10

标签: android android-volley

我使用Volley库,StringRequest类在客户端和服务器之间交换数据。我在服务器上的数据库记录保存在UTF-8字符集中。现在,当我想使用StringRequest获取记录时,它们的格式不正确!

我的代码:

    StringRequest strReq = new StringRequest(Method.GET, url,
            new Response.Listener<String>() {

                @Override
                public void onResponse(String response) {

                    Log.d(TAG, response);
                }
            }, new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {
                    VolleyLog.d(TAG, "Error: " + error.getMessage());
                }
            });

我可以做些什么来解决这个问题?

1 个答案:

答案 0 :(得分:4)

您应该覆盖parseNetworkResponse方法,更改response.data字符集并将其返回。以下是一个样本。

StringRequest request = new StringRequest(Method.GET, url,

            new Listener<String>() {

                @Override
                public void onResponse(String response) {

                }
            }, new ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {

                }

            }) {

        @Override
        protected Response<String> parseNetworkResponse(
                NetworkResponse response) {

            String strUTF8 = null;
            try {
                strUTF8 = new String(response.data, "UTF-8");

            } catch (UnsupportedEncodingException e) {

                e.printStackTrace();
            }
            return Response.success(strUTF8,
                    HttpHeaderParser.parseCacheHeaders(response));
        }
};