2015-05-27 35 views
2

我使用Volley庫製作了一個項目(BlogReader)。如果我用UTF-8編碼json文件並重新加載我的AndroidStudio模擬器,列表視圖變成白色(帶菜單標題的白色空白)。如果我在ANSI或win-1251上再次更改json編碼,它就開始工作。我更改了UTF-8上的Android文件編碼設置,但沒有任何更改。如何解決這個問題?Volley請求失敗,UTF-8編碼

PS。對不起,無法加載截圖,非常低的信譽(

回答

2

假設這是一個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)); 
    } 
    } 
} 
+0

感謝您的回答,但它沒有工作(。也許與谷圖書館的問題?我做這個項目沒有谷,它的AlmosT工作,沒有谷我不能添加圖像( – Nikolai

+0

唯一的解決方案,實際上作品! – user219882

11

要顯示UTF8字符串編碼西裏爾字母,它幫助我很多:

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

最簡單,最好的解決方案。 –

0

user2282338答案完美無缺。

我編碼了響應數據,它非常適合阿拉伯文本。字符串newStr = URLDecoder.decode(URLEncoder.encode(response.toString(),「iso8859-1」),「UTF-8」);