Volley解析中文字符
来源:互联网 发布:tw域名 编辑:程序博客网 时间:2024/05/17 22:39
在使用Volley的时候,一般使用的是继承自Request<String>的StringRequest,而StringRequest中重写了两个方法:praseNetworkResponse和diliverResponse,可能还会有getParams方法,用于获取参数。
在praseNetworkResponse(NetworkResponse networkResponse)中,对networkResponse的解析是这样的:
result = new String(networkResponse.data, HttpHeaderParser.parseCharset(networkResponse.headers));
这里的第二个参数指定了string的编码类型,而HttpHeaderParser的parseCharset的方法源码是这样的:
public static String parseCharset(Map<String, String> headers) { String contentType = (String)headers.get("Content-Type"); if(contentType != null) { String[] params = contentType.split(";"); for(int i = 1; i < params.length; ++i) { String[] pair = params[i].trim().split("="); if(pair.length == 2 && pair[0].equals("charset")) { return pair[1]; } } } return "ISO-8859-1"; }
它会对返回头进行解读,读取Content-Type的值,若服务器添加了header信息中的Content-Type值,则此方法返回此值,否则返回默认值"iso-8859-1"。
也就是说,若服务器返回的是中文(utf-8编码),且没有指定header的Content-Type,那么Volley解析就会乱码,无法得到中文字符。
解决方法也很简单,有两种方法:
1.在客户端对返回信息进行直接解码,指定解码类型为"utf-8":
result = new String(networkResponse.data,"utf-8");2.服务器端设置header:
HttpHeaders headers = new HttpHeaders();header.setContentType("text/html;charset=utf-8");这样就完成了。
0 0
- Volley解析中文字符
- Android-Volley解析中文乱码
- Boost ptree解析中文字符
- 【Volley】Volley源码解析
- volley 解析
- Volley解析
- Volley解析
- Volley 解析
- Volley解析
- Volley 解析
- Volley解析
- jsp解析中文字符,其中两编一解
- Volley使用之对服务传回的中文数据进行字符转码
- 解决Android Volley解析json,String数据中文乱码的问题
- 使用volley请求数据,Gson解析json的时候出现中文乱码问题
- Volley解析json(三)
- Android Volley完全解析
- Android Volley完全解析
- 第一章:欢迎来到python 的世界
- MySQL的ON DUPLICATE KEY UPDATE 使用
- LEETCODE 9 Palindrome Number (JAVA题解)
- 还原入侵者
- 多线程经典的 生产者-消费者 实例
- Volley解析中文字符
- [POJ 3020]Antenna Placement[二分图最小路径覆盖]
- 自己封装的afnetworking数据请求
- android 组合控件-属性获取
- Ubuntu/Linux上搭建大型数据库(单机/分布式):Hypertable
- st的输入输出模式
- Makefile 管理工具 — Automake and Autoconf
- RecyclerView动画
- Android 开发一些好用的第三方包