最近有人跟我说关于mysql中文乱码的问题,最终总结如下:
1)在mysql客户端下查询数据之前先:set names gbk;
2)在连接mysql数据库过程中设置编码:jdbc:mysql://localhost:3306/xxx.db?useUnicode=true&characterEncoding=utf-8;
作用是:指定字符的编码、解码格式。
假设你mysql数据库使用的编码格式是gbk,而项目那边设置的是utf-8编码格式,则useUnicode=true&characterEncoding=utf-8的作用可分为如下两步:
a. 存数据时:
数据库在存放项目数据时会先用utf-8的格式将数据解码成字节码,然后再将解码后的字节码重新按gbk的编码格式存放到数据库中。
b.取数据时:
在从数据库中取数据时,数据库会先将数据库中的数据按gbk编码格式解码成字节码,然后再将解码后的字节码重新按utf-8的编码格式重新编码,最后再将数据返回给客户端。