跟踪Android客户端中文(偶然性)乱码

软件运行环境:

服务端: ubuntu 14.04.2 server

客户端: Android pad

数据跟踪工具: 无线网卡 + Wireshark + notepad ++

———————————————————————————————————————

当客户端和服务器进行数据交互的过程中,测试过程中发现数据异常,但是在彼此程序猿的通过打印输出数据方式跟踪数据的异常,而且在彼此都肯定数据没问题的时候,是非常蛋疼的,到底是谁的错?那么我们就从数据的传输介质中接受端或者发送端入口处截取数据分析。

在此,我采用的是通过截取网络数据到Android设备的入口处截取。由于在移动设备上采用抓包再分析是一个很麻烦的过程,还需要root设备,如若采用模拟器 + tcpdump操作,过程繁琐。本人在此分享一种通过在主机上(台式机)插入一个无线网卡,让其成为一个热点并且用移动设备连接这个热点,在PC端用Wireshark抓取台式机无线网卡的数据,就可以很easy的分析数据了。具体分为以下几步(针对客户端数据显示偶然性中文乱码)

  1. 插入无线网卡,下载360免费wifi(真心比wifi精灵好使,wifi精灵特么程序老死),配置好无线热点,用移动设备连接热点

  2. 如上图,设备已经连接好热点,下面就是打开PC端的Wireshark工具

    如图所示选择无线连接,点击Start开始抓取无线网卡上的数据包。

  3. 设置过滤条件(例如下图中过滤来自服务器169.254.1.12的数据),在移动设备上操作软件,用Wireshark将数据打印到txt文本,由于是中文字符,所以要要分析字符的内码,所以在txt数据包中找到关键数据,并将中文字符的16进制码拷入notepad++ 中用Hex-Editor编辑,最后把编辑后的数据保存为html,用浏览器打卡,查看中文显示是否正确(如下图)

    如上图所示,截取的数据真实字符为【 某某会议室 ISC TV 】,将截取的16进制放入notepad++ 的Hex-Editor编辑器中编辑,并保存为html文件,最后用浏览器打开,选择不同编码格式

    notepad++ Hex-Editor 编辑如下图所示

用浏览器打开

将正确中文数据和乱码中文数据分别用Wireshark截取两份,比较。 由于从事的是服务端开发,所以通过此种方法顺利的把责任推给 移动客户端的程序猿。不过目前没有找到乱码的原因,由于数据是分两个网络数据包发送过去的,目前猜测可能客户端在接受数据包,拼接的时候出现问题,或者json库使用的过程中转utf-8编码出现问题。

时间: 2024-08-01 22:45:46

跟踪Android客户端中文(偶然性)乱码的相关文章

Arcgis for Android解决中文字体乱码的问题

首先,在此感谢Arcgis for Android群里的一位成员,大家可以加进来QQ群号:337469080. 不论是Arcgis for Android的哪个版本,都没无法解决中文乱码的问题,这个与Android中自带的字体库有关,可以参考http://mobile.51cto.com/android-265238.htm这篇文章. 所以,要在Arcgis for Android中显示中文,需要对字体进行设置,如下: TextSymbol ts = new TextSymbol(25, add

ArcGIS Android SDK 中文标注乱码

Android使用如下代码添加标注: TextSymbol ts = new TextSymbol(12, "名称", Color.RED);Graphic gp = new Graphic(wgspoint, ts);objectLayer.addGraphic(gp); 如出现乱码,需要针对不同机器查看Fonts目录有什么字体文件,比如该机器上有DroidSansFallback.ttf文件,则为ts设置字符集,如下: ts.setFontFamily("DroidSan

Android studio 中文乱码问题解决

针对刚安装好的Android studio, 比如import工程时,你会发现你的很多中文目录显示异常,如下图: 为什么会出现这个问题呢,其实原因很简单,因为Android studio的默认Font并不支持中文. 怎么解决呢,打开settings,如下图: 选择用红色框框起来任意一种,那为啥都是乱码呢,因为这些都是中文字体的格式,所以在你设置之前当然也是显示不了. 或者你也可以选择'simsun'.这个样式也很多人在用. OK,这样就可以了! Android studio 中文乱码问题解决,布

Android 客户端与服务端JSP相互传递中文

为了兼容简体.繁体及其他语系,推荐使用UTF-8编码. 首选,我们看看Android端应该怎么做: 在发送前,应该对参数值要进行UTF-8编码,我写了一个static的 转换函数,在做发送动作前用它将参数值转换成utf8编码: public class NetUtil { static public String toUtf8Url(String value) { try { return java.net.URLEncoder.encode(value, "utf8"); } cat

android studio中文乱码的解决方法【转】

一. 在android的源文件中的乱码问题 Android Studio安装后发现所有的中文,不管是界面上的还是输出的log中的中文都变成小框框,具体的解决方法如下, 可以肯定是字体的问题 解决:菜单File->settings对话框,切换到Appearance标签 选择override default fonts by, 先随便选择一个中文字体(PS:小框框都是中文字 呵呵),保存,重启软件,即可. 二. Toast.makeText乱码问题,如下 文件中乱码解决了, 发现软件在工作中, To

Android项目,从web上取下汉字,中文部分乱码

Android项目,从web上取下汉字,中文部分乱码. 常见问题,搜索一下,网上有很多办法解决.如果还没有试过这个办法,可以尝试一下. BufferedReader in = new BufferedReader(new InputStreamReader(response.getEntity() .getContent(),"gb2312")); 原文首发自我的主力博客:http://anforen.com/wp/2015/10/android-web-chinese-messy-c

android studio 程序真机运行中文显示乱码

代码里中文显示正常,真机运行后中文显示乱码,解决办法: build.gradle中添加一句 android { compileOptions.encoding = "GBK" } 版权声明:本文为博主原创文章,未经博主允许不得转载.

android客户端与服务端交互的三种方式

android客户端向服务器通信一般有以下选择: 1.传统的java.net.HttpURLConnection类 2.apache的httpClient框架(已纳入android.jar中,可直接使用) 3.github上的开源框架async-http(基于httpClient) ---------------------------------------------------------------------------------- 下面分别记录这三种方式的使用, 传统方式: /**

使用calabash测试开源中国Android客户端

Calabash-android是支持android的UI自动化测试框架,前面已经介绍过<中文Win7下成功安装calabash-android步骤>,这篇博文尝试测试一个真实应用:开源中国客户端.目的是和大家一起学习calabash测试工具. 测试环境与源码准备 先介绍一下oschina.net oschina除了有网站,还有三大平台手机客户端: http://www.oschina.net/app 客户端已经开源! 那么开源可以用来做什么呢? 我正在学用calabash-android,得