关于Volley网络框架中文乱码的问题
2015-05-14 13:01
405 查看
问题描述:
使用StringRequest这个类访问网络的时候,返回来的数据包含中文,出现了中文乱码,无论怎么改服务端的文件或是改项目编码,或是用gbk和utf-8去重新编码返回来的字符串,都无法解决编码问题。打开这个类的源码,看看他是如何编码。
解决方案:
打开StringRequest类的源码,处理编码的方法如下:@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
String parsed;
try {
parsed = new String(response.data, HttpHeaderParser.parseCharset(response.headers));
} catch (UnsupportedEncodingException e) {
parsed = new String(response.data);
}
return Response.success(parsed, HttpHeaderParser.parseCacheHeaders(response));
}
打开HttpHeaderParser类的parseCharset方法,处理编码的方法如下:
public static String parseCharset(Map<String, String> headers) { return parseCharset(headers, HTTP.DEFAULT_CONTENT_CHARSET); }
其中HTTP.DEFAULT_CONTENT_CHARSET就是ISO-8859-1。这段代码会根据服务器端返回来的网页头信息获取Content-Type中的charset,如果没有获取到,默认编码就是ISO-8859-1。
只要把HTTP.DEFAULT_CONTENT_CHARSET改成需要的编码就可以了,比如我的就改成:HTTP.UTF_8。
或者直接在parseNetworkResponse方法中不根据网页头信息获取编码,而是直接指定编码:
@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
String parsed;
try {
parsed = new String(response.data, <span style="font-family: KaiTi_GB2312; font-size: 18px;">HTTP.UTF_8</span>);
} catch (UnsupportedEncodingException e) {
parsed = new String(response.data);
}
return Response.success(parsed, HttpHeaderParser.parseCacheHeaders(response));
}
根据具体需求使用具体的方式。
Volley是Google提供的网络通信库,使得网络请求更简单、更快速。
项目地址:https://android.googlesource.com/platform/frameworks/volley
相关文章推荐
- 关于volley网络请求框架乱码问题
- 关于Volley网络请求框架空指针异常问题
- Android Volley 框架JSON中文乱码问题的解决
- 解决Volley请求框架中文乱码问题
- 安卓开发中用volley框架请时,中文返回乱码问题
- Android Volley框架(三):解决Volley请求服务器返回中文乱码问题
- 关于添加struts1.2框架的输入中文的乱码问题
- ado.net关于mysql数据中文乱码问题
- php、asp.net关于后台设置的cookie前台JS获取时出现中文乱码问题解决
- 关于redhat enterprise linux 6.4下oracle11g中文乱码问题总结
- 关于QT中 tr(" ")中文乱码问题
- DWZ 框架remote 验证字段唯一性方法提交后台,如果是中文会显示成乱码问题
- 关于URL或JS中的URL传参中文乱码问题
- Android 与 PC网络通信之中文乱码问题解决
- 关于 Hibernate 存储数据到 MySQL 中文乱码的问题
- Java 关于中文乱码问题的解决方案与原理
- 关于URL或JS中的URL传参中文乱码问题
- 使用volley请求数据,Gson解析json的时候出现中文乱码问题
- [Android开发常见问题-20] Android 网络通信框架Volley简介(Google IO 2013)
- 今天在网络上找到了一个比较好的解决Rhythmbox中文乱码的问题的方法