我正在使用这个 httpclient: http: //loopj.com/android-async-http/我正在使用这个 httpclient 获取一个 json。我想设置这个httpclient的字符编码。客户端返回的 JSONObject 包含土耳其字符,例如 şğöü。但它已损坏,我无法查看此字符。
如何设置此 httpclient 的字符编码?
我正在使用这个 httpclient: http: //loopj.com/android-async-http/我正在使用这个 httpclient 获取一个 json。我想设置这个httpclient的字符编码。客户端返回的 JSONObject 包含土耳其字符,例如 şğöü。但它已损坏,我无法查看此字符。
如何设置此 httpclient 的字符编码?
正确的是服务器提供返回页面的编码。如果是这样,您将收到正确的。但是,如果它不提供编码 Async-http 似乎假定为 UTF-8 并查看代码,它似乎不支持提供默认的替代方案。
AsyncHttpResponseHandler中的相关代码:
// Interface to AsyncHttpRequest
void sendResponseMessage(HttpResponse response) {
...
responseBody = EntityUtils.toString(entity, "UTF-8");
如果你想这样做,你需要使用你自己的 AsyncHttpResponseHandler 版本或建议一个补丁来指定默认编码。
我通过修改loopj源代码文件“AsyncHttpResponseHandler.java”解决了这个问题...
void sendResponseMessage(HttpResponse response){
.........
//responseBody = EntityUtils.toString(entity, "UTF-8");
responseBody = EntityUtils.toString(entity, "ISO-8859-1");
}
ISO-8859-1 编码将为您提供正确的字符..