最近的项目中,要在安卓客户端填写信息,发送至服务器,用的是HTTP POST 方法,但是后台出现了中文乱码,内容如下:

服务器收到的数据如下:
【内容1】
{"content":"?????????","townId":"14","companyId":"8","date":"2014-12-27","supervisor":"??","userId":0}
这个功能除了在安卓客户端做之外,在网页版系统中也有,在网页中提交的数据(正常显示)如下:
【内容2】
{"companyId":8,"townId":14,"supervisor":"璋㈠姏","content":"鍛樺伐涓氬姟姘村钩鏈夊緟鎻愰珮","date":"2014-12-28","userId":1}
这段POST数据,共有6个参数,其中,出现了中文的部分就是乱码。
那就看看在安卓客户端的POST代码中有什么问题:
- postData = ....
- httpPost.setEntity(new StringEntity(postData.toString()));
好了似乎看不出什么问题,不过网上查一下,很快就发现了问题,安卓客户端的POST需要指定编码,不是网页上那种Form的POST。因此,将代码改为:
- postData = ....
- httpPost.setEntity(new StringEntity(postData.toString(), HTTP.UTF_8));
指定UTF8编码。
然后重新测试,后台的输出为:
{"content":"鍛樺伐涓氬姟姘村钩鏈夊緟鎻愰珮","townId":"14","companyId":"8","date":"2014-12-27","supervisor":"璋㈠姏","userId":0}
可以看到,和【内容2】一样了。
实际内容为:

好了,问题解决。
编码问题真是无处不在。