最近在写一个项目,遇到了中文乱码问题。这个问题很复杂。涉及到了多个模块
android app通过json数据格式向以jersey技术编写的webservice接口发送数据并写入mysql数据库。问题就出在数据库内的数据乱码。
首先先要把mysql的连接校对设置成utf-8 。因为默认是lantin,然后还要把数据库的数据格式设置成utf-8
之后为先保证webservice的数据是正确的。先让其在执行sql语句前输出接收到的内容。
发现在其接收的数据时就已经是乱码了。那么问题肯定出现在android post 数据之前。
json数据格式如何设置字符编码呢
stringEntity = new StringEntity(jsonObject.toString(), HTTP.UTF_8);实践出来的 。
只有在构造Stringentity时设置字符编码才能正确设置。
如果在设置完Stringentity的内容之后 再设置字符编码结果依然不正确 。
然后在webservice输出结果正确后 设置连接时的字符编码。此编码应与mysql的编码保持一致才能保证其不发生乱码情况 。
connection = DriverManager
.getConnection(
"jdbc:mysql://127.0.0.1:3306/teamhow?useUnicode=true&characterEncoding=utf8",
"root", "");
在解决所有的设置之后 程序运转正常。