1

我正在使用这个 httpclient: http: //loopj.com/android-async-http/我正在使用这个 httpclient 获取一个 json。我想设置这个httpclient的字符编码。客户端返回的 JSONObject 包含土耳其字符,例如 şğöü。但它已损坏,我无法查看此字符。

如何设置此 httpclient 的字符编码?

4

2 回答 2

5

正确的是服务器提供返回页面的编码。如果是这样,您将收到正确的。但是,如果它不提供编码 Async-http 似乎假定为 UTF-8 并查看代码,它似乎不支持提供默认的替代方案。

AsyncHttpResponseHandler中的相关代码:

// Interface to AsyncHttpRequest
void sendResponseMessage(HttpResponse response) {
    ...
    responseBody = EntityUtils.toString(entity, "UTF-8");

如果你想这样做,你需要使用你自己的 AsyncHttpResponseHandler 版本或建议一个补丁来指定默认编码。

于 2013-03-23T22:26:35.770 回答
0

我通过修改loopj源代码文件“AsyncHttpResponseHandler.java”解决了这个问题...

void sendResponseMessage(HttpResponse response){
      .........
      //responseBody = EntityUtils.toString(entity, "UTF-8");
        responseBody = EntityUtils.toString(entity, "ISO-8859-1");
}

ISO-8859-1 编码将为您提供正确的字符..

于 2013-04-25T07:16:57.533 回答