我使用Volley库制作了一个项目(BlogReader)。如果我用UTF-8编码json文件并重新加载我的AndroidStudio模拟器,列表视图变成白色(带菜单标题的白色空白)。如果我在ANSI或win-1251上再次更改json编码,它就开始工作。我更改了UTF-8上的Android文件编码设置,但没有任何更改。如何解决这个问题?Volley请求失败,UTF-8编码
PS。对不起,无法加载截图,非常低的信誉(
我使用Volley库制作了一个项目(BlogReader)。如果我用UTF-8编码json文件并重新加载我的AndroidStudio模拟器,列表视图变成白色(带菜单标题的白色空白)。如果我在ANSI或win-1251上再次更改json编码,它就开始工作。我更改了UTF-8上的Android文件编码设置,但没有任何更改。如何解决这个问题?Volley请求失败,UTF-8编码
PS。对不起,无法加载截图,非常低的信誉(
假设这是一个HTTP请求,那么第一种方式是编码服务器的使用UTF-8的反应。实施取决于服务器的类型。
但是,如果你希望强制UTF8编码在所有响应,那么你需要重写的请求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));
}
}
}
要显示UTF8字符串编码西里尔字母,它帮助我很多:
newStr = URLDecoder.decode(URLEncoder.encode(oldStr, "iso8859-1"),"UTF-8");
最简单,最好的解决方案。 –
user2282338答案完美无缺。
我编码了响应数据,它非常适合阿拉伯文本。字符串newStr = URLDecoder.decode(URLEncoder.encode(response.toString(),“iso8859-1”),“UTF-8”);
感谢您的回答,但它没有工作(。也许与谷图书馆的问题?我做这个项目没有谷,它的AlmosT工作,没有谷我不能添加图像( – Nikolai
唯一的解决方案,实际上作品! – user219882