广告
返回顶部
首页 > 资讯 > 移动开发 >android POST数据遇到的UTF-8编码(乱码)问题解决办法
  • 257
分享到

android POST数据遇到的UTF-8编码(乱码)问题解决办法

编码乱码postAndroid 2022-06-06 10:06:06 257人浏览 泡泡鱼
摘要

今天遇到这样一个bug:客户端POST到服务器的一段数据导致服务器端发生未知异常。服务器端确认是编码转换错误。于是截取网络数据包进行分析,发现客户端POST的JSON数据中包含

今天遇到这样一个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 通过Base64上传图片到服务器实现实例Android数据加密之Base64编码算法的简单实现Android编程加密算法小结(AES、Base64、RAS加密算法)android WEBp编解码详解Mac OS下为Android Studio编译FFmpeg解码库的详细教程Android图片的Base64编码与解码及解码Base64图片方法


--结束END--

本文标题: android POST数据遇到的UTF-8编码(乱码)问题解决办法

本文链接: https://www.lsjlt.com/news/27106.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作