我使用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