Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 截击请求中UTF-8编码失败_Android_Json_Encoding_Android Volley - Fatal编程技术网

Android 截击请求中UTF-8编码失败

Android 截击请求中UTF-8编码失败,android,json,encoding,android-volley,Android,Json,Encoding,Android Volley,我使用Volley库做了一个项目(BlogReader)。如果我用UTF-8编码json文件并重新加载AndroidStudio Emulator,列表视图将变为白色(带有菜单头的白色空白)。如果我在ANSI或win-1251上再次更改json编码,它就会开始工作。我更改了UTF-8上的Android文件编码设置,但没有任何更改。如何解决这个问题 PS.抱歉,无法加载屏幕截图,信誉很低(假设这是一个http请求,那么第一种方法是使用UTF-8对服务器的响应进行编码。实现取决于服务器的类型 但如果

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


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

假设这是一个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));
    }
  }
}
公共类UTF8StringRequest扩展了StringRequest{
公共UTF8StringRequest(int方法、字符串url、Response.Listener、Response.ErrorListener ErrorListener){
super(方法、url、侦听器、errorListener);
}
公共UTF8StringRequest(字符串url,Response.Listener,Response.ErrorListener ErrorListener){
超级(url、侦听器、errorListener);
}
@凌驾
受保护的响应parseNetworkResponse(NetworkResponse响应){
字符串utf8String=null;
试一试{
utf8String=新字符串(response.data,“UTF-8”);
返回Response.success(utf8String,HttpHeaderParser.parseCacheHeaders(Response));
}捕获(不支持的编码异常e){
返回Response.error(新的ParseError(e));
}
}
}

要以UTF8编码西里尔文显示字符串,它对我帮助很大:

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

谢谢你的回答,但它不起作用(.Valley Library可能有问题吗?我在没有Valley的情况下做了这个项目,它几乎可以工作,没有Valley我无法添加图像(最简单也是最好的解决方案)。