android POST数据遇到的UTF-8编码(乱码)问题解决办法
时间:2022-09-12 22:31:46
今天遇到这样一个bug:客户端POST到服务器的一段数据导致服务器端发生未知异常。服务器端确认是编码转换错误。于是截取网络数据包进行分析,发现客户端POST的json数据中包含下面一段(hex形式):
... 61 64 20 b7 20 52 69 63 ...
问题就出在这个b7上。查阅Unicode代码表后发现,U+00b7是MIDDLE DOT,它的UTF-8表现形式应该是c2 b7,但为何客户端发送的数据中它变成了b7?
由于系统使用了ormlite、gson和async-http几个库,于是逐一排查。最后发现原来是向服务器发送数据时没有指定文字编码,导致async-http(实际是apache common http client)将数据以ISO-8559-1格式发送,U+00b7被编码成b7,然后服务器试图使用UTF-8解码时发生错误。
出错的代码片段如下:
Gson gson = new Gson();
String json = gson.toJson(data);
StringEntity entity = new StringEntity(json);
httpClient.post(context, url, entity, "application/json", new TextHttpResponseHandler() ... );
第三行new StringEntity(json)时没有指定编码导致错误。改正后如下:
Gson gson = new Gson();
String json = gson.toJson(data);
StringEntity entity = new StringEntity(json, "utf-8");
httpClient.post(context, url, entity, "application/json;charset=utf-8", new TextHttpResponseHandler() ... );
标签:android,UTF-8
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
C# SQLite事务操作方法分析
2022-11-23 11:15:01
Android实现左滑删除控件
2023-03-02 21:36:49
![](https://img.aspxhome.com/file/2023/6/106826_0s.gif)
Flutter web bridge 通信总结分析详解
2022-05-23 05:15:42
![](https://img.aspxhome.com/file/2023/3/138493_0s.png)
c#调用c++的DLL的实现方法
2023-10-27 05:27:40
![](https://img.aspxhome.com/file/2023/9/71769_0s.png)
Java实现的日期处理类完整实例
2023-12-08 00:16:10
微信小程序获取手机号,后端JAVA解密流程代码
2023-11-29 07:57:26
Mybatis与Ibatis的区别
2022-11-19 14:27:42
IntelliJ IDEA使用git初始化仓库的使用方法
2022-05-24 12:37:26
![](https://img.aspxhome.com/file/2023/4/68534_0s.png)
java之static关键字用法实例解析
2023-11-21 14:42:49
![](https://img.aspxhome.com/file/2023/8/78388_0s.png)
Android中Canvas的常用方法总结
2021-11-25 03:00:28
![](https://img.aspxhome.com/file/2023/1/111721_0s.png)
Netty分布式高性能工具类同线程下回收对象解析
2023-05-24 22:00:55
Java通过XPath获取XML文件中符合特定条件的节点
2023-01-19 07:42:34
老生常谈C/C++内存管理
2022-05-07 02:17:10
spring+html5实现安全传输随机数字密码键盘
2023-04-05 13:46:39
![](https://img.aspxhome.com/file/2023/7/125587_0s.jpg)
进度条ProgressBar及ProgressDialog(实例)
2021-09-24 01:07:42
C#利用递归算法解决汉诺塔问题
2022-04-29 23:04:10
![](https://img.aspxhome.com/file/2023/4/78194_0s.jpg)
java实现简单超市管理系统
2022-04-03 07:41:04
![](https://img.aspxhome.com/file/2023/3/106123_0s.png)
详解如何用c++实现平衡二叉树
2023-11-30 21:29:44
![](https://img.aspxhome.com/file/2023/6/127496_0s.jpg)
使用Enumeration和Iterator遍历集合类详解
2023-01-05 11:57:51
![](https://img.aspxhome.com/file/2023/0/94330_0s.jpg)
Mybatis中的like模糊查询功能
2023-09-25 11:57:28