我正在使用这个httpclient:http://loopj.com/android-async-http/ 我得到这个httpclient的json。 我想设置此httpclient的字符串。客户端返回的JSONObject包含土耳其字符,如şğöü。但它已损坏,我不能查看这些字符。如何设置httpclient的字符编码
如何设置此httpclient的字符编码?
我正在使用这个httpclient:http://loopj.com/android-async-http/ 我得到这个httpclient的json。 我想设置此httpclient的字符串。客户端返回的JSONObject包含土耳其字符,如şğöü。但它已损坏,我不能查看这些字符。如何设置httpclient的字符编码
如何设置此httpclient的字符编码?
正确的是该服务器提供返回页面的编码。 如果确实如此,您将收到正确的一个。 但是,如果它不提供编码Async-http似乎认为UTF-8并且看着代码它似乎不支持提供一个默认的替代。
相关的代码在AsyncHttpResponseHandler:
// Interface to AsyncHttpRequest
void sendResponseMessage(HttpResponse response) {
...
responseBody = EntityUtils.toString(entity, "UTF-8");
如果你想要做的,你需要用户自己AsyncHttpResponseHandler的版本或暗示的补丁可以指定默认编码。
我通过修改循环J源代码文件“AsyncHttpResponseHandler.java”解决了这个问题...
void sendResponseMessage(HttpResponse response){
.........
//responseBody = EntityUtils.toString(entity, "UTF-8");
responseBody = EntityUtils.toString(entity, "ISO-8859-1");
}
ISO-8859-1编码会给你正确的字符..
你是对的。我用UTF-8编写了json,问题解决了。谢谢。 – Murat 2013-03-23 22:54:46
AsynchttpClient现在有一个构建方法,它会执行此操作:responseHandler.setCharset(“ISO-8859-1”); – Jordy 2014-06-02 10:21:10