在排球请求中使用UTF-8编码失败

时间:2015-05-27 02:56:28

标签: android json encoding android-volley

我使用Volley库制作了一个项目(BlogReader)。如果我用UTF-8编码json文件并重新加载我的AndroidStudio仿真器,列表视图将变为白色(带有菜单标题的白色空白)。如果我再次在ANSI或win-1251上更改json编码它开始工作。我更改了UTF-8上的Android文件编码设置,但没有任何改变。怎么解决这个问题?

PS。抱歉,无法加载屏幕截图,信誉很低(

2 个答案:

答案 0 :(得分:12)

要以UTF8编码Cyrillic显示字符串,它对我帮助很大:

newStr = URLDecoder.decode(URLEncoder.encode(oldStr, "iso8859-1"),"UTF-8");

答案 1 :(得分:2)

假设这是一个http请求,那么第一种方法是使用UTF-8对服务器的响应进行编码。实现取决于服务器的类型。

但是如果要在所有响应中强制执行UTF-8编码,则需要覆盖请求parseNetworkResponse。例如,下面的代码适用于StringRequest:

public class UTF8StringRequest extends StringRequest {
  public UTF8StringRequest(int method, String url, Response.Listener<String> listener, Response.ErrorListener errorListener) {
    super(method, url, listener, errorListener);
  }

  public UTF8StringRequest(String url, Response.Listener<String> listener, Response.ErrorListener errorListener) {
    super(url, listener, errorListener);
  }

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

    String utf8String = null;
    try {
        utf8String = new String(response.data, "UTF-8");
        return Response.success(utf8String, HttpHeaderParser.parseCacheHeaders(response));

    } catch (UnsupportedEncodingException e) {
        return Response.error(new ParseError(e));
    }
  }
}