在android与服务器端通信期间出现部分中文有乱码,如图所示:
众所周知,乱码出现在两种不同的编码格式相互转换过程中,而在项目的一开始便约定所有的编码格式都采用UTF-8
mysql编码
服务器端返回数据编码
由于项目采用的是SpringMVC 所以只需要将其如下配置即可返回UTF-8格式的编码
而在本机中使用httpClient进行http模拟时
数据也正常返回。所以将问题锁定在android端代码
在android端的输入流中使用的是以字节形式进行读取(InputStream)
而UTF-8编码中的中文中一个汉字可能包含几个字节,猜想可能是在读取时将流截断时正好将一个完整的中文字符截断。将读取方式改为字符读取后(InputStreamReader),问题得以解决