android volley设置编码,android – 在Volley请求中的UTF-8编码

在我的Android应用程序中,我使用Volley JsonArrayRequest加载json数据.数据是由我自己创建的,我用Sublime用UTF-8编码保存它们.当我得到响应并填充我的ListView时,文本显示不正确(变音符号).这是我的请求的样子:

JsonArrayRequest request = new JsonArrayRequest(targetUrl,

new Response.Listener() {

@Override

public void onResponse(final JSONArray response) {

try {

fillList(response);

} catch (JSONException e) {

e.printStackTrace();

}

}

},

new Response.ErrorListener() {

@Override

public void one rrorResponse(VolleyError error) {

}

});

requestQueue.add(request);

当我使用此方法加载完全相同的数据时,所有文本都正确显示:

final StringBuilder builder = new StringBuilder();

final HttpClient client = new DefaultHttpClient();

final HttpGet httpGet = new HttpGet(request);

try {

final HttpResponse response = client.execute(httpGet);

final StatusLine statusLine = response.getStatusLine();

int statusCode = statusLine.getStatusCode();

if (statusCode == 200) {

final HttpEntity entity = response.getEntity();

final InputStream content = entity.getContent();

final BufferedReader reader = new BufferedReader(new InputStreamReader(content));

String line;

while ((line = reader.readLine()) != null) {

builder.append(line);

}

} else {

}

} catch (ClientProtocolException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

所以对我来说,似乎我的json文件的编码没有问题.如何在Volley中修复此编码问题?

解决方法:

如果你知道你要求的绝对所有文件都是UTF-8格式,听起来就是这样,那么你可能会考虑强制你的Volley请求返回UTF-8格式的字符串.您可以通过继承标准JSON请求来实现此目的.像这样的东西:

public class Utf8JsonRequest extends JsonRequest {

...

@Override

protected Response parseNetworkResponse (NetworkResponse response) {

try {

String utf8String = new String(response.data, "UTF-8");

return Response.success(new JSONObject(utf8String), HttpHeaderParser.parseCacheHeaders(response));

} catch (UnsupportedEncodingException e) {

// log error

return Response.error(new ParseError(e));

} catch (JSONException e) {

// log error

return Response.error(new ParseError(e));

}

}

}

标签:android,encoding,utf-8,android-volley

来源: https://codeday.me/bug/20190930/1837175.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值