Mysql保存数据乱码问题之Mysql JDBC Url 参数说明useUnicode=true&characterEncoding=UTF-8
问题描述:mysql保存数据后,数据变成了乱码
原因:经过排查,发现mysql的连接字符串为url: jdbc:mysql://127.0.0.1/databaseName,没有指定字符的编码、解码格式,注意:如果这样写即使在windows上不是乱码但是linux上就可能是乱码
解决:给连接串加上useUnicode和characterEncoding,指定对应的字符编解码格式,如 jdbc:mysql://127.0.0.1/car?useUnicode=true&characterEncoding=utf8,
例如:mysql数据库用的是gbk编码,而项目数据库用的是utf-8编码。这时候如果添加了useUnicode=true&characterEncoding=UTF-8 ,那么作用有如下两个方面:
1. 存数据时:数据库在存放项目数据的时候会先用UTF-8格式将数据解码成字节码,然后再将解码后的字节码重新使用GBK编码存放到数据库中。
2. 取数据时:在从数据库中取数据的时候,数据库会先将数据库中的数据按GBK格式解码成字节码,然后再将解码后的字节码重新按UTF-8格式编码数据,最后再将数据返回给客户端。