我使用Volley库制作了一个项目(BlogReader)。如果我用UTF-8编码json文件并重新加载我的AndroidStudio仿真器,列表视图将变为白色(带有菜单标题的白色空白)。如果我再次在ANSI或win-1251上更改json编码它开始工作。我更改了UTF-8上的Android文件编码设置,但没有任何改变。怎么解决这个问题?
PS。抱歉,无法加载屏幕截图,信誉很低(
答案 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));
}
}
}