java 方面
1. 在 url 连接参数后面添加数据
1 | jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8 |
该参数的作用是:指定字符的编码、解码格式。
例如:mysql 数据库用的是 gbk 编码,而项目数据库用的是 utf-8 编码。
这时候如果添加了 useUnicode=true&characterEncoding=UTF-8 ,
那么作用有如下两个方面:
- 存数据时:
数据库在存放项目数据的时候会先用 UTF-8 格式将数据解码成字节码,
然后再将解码后的字节码重新使用 GBK 编码存放到数据库中。 - 取数据时:
在从数据库中取数据的时候,数据库会先将数据库中的数据按 GBK 格式解码成字节码,
然后再将解码后的字节码重新按 UTF-8 格式编码数据,最后再将数据返回给客户端。
2.request response 设置的编码设置成 utf-8 形式
1 | request.setCharacterEncoding("utf-8"); |
mysql 方面:
创建数据库时候要指定 UTF-8 编码
1 | create database (数据库名字) default character set='utf8'; 注意 utf8 中间没有 - |
设置完成以上两步 程序插入中文和读取中文都没有问题了,
但是: 接下来的问题是 有些同学插入的数据是中文 但是 select 语句一执行 就出先现???
别着急 那是因为 mysql 终端数据显示编码不一致,在 mysql -uroot -p 进入 mysql 执行1
set names "utf8";
至此乱码问题解决
windows 下把以上 utf-8 改成 gbk 即可