情景在现
这个暑假,我和小伙伴们在搞一个音乐论坛,在把文章内容从前端从到数据库中后,打开数据库一查询,出现了一堆***???***,我的内心也是出现一万句mmp。
有问题总得解决呀,于是我就在一堆博客中寻求一种行之有效的方法:
首先一定要保证创建数据库的时候,字符集为utf-8:
CREATE DATABASE <数据库名> DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
当然也可以通过图像化界面工具进行修改。
之后就是创建表时,也要设置字符集
CREATE TABLE table1(
id int NOT NULL,
text varchar(40) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
下一步就是保证前端页面编码格式是utf-8
即
<meta charset="UTF-8">
我们继续,下一步保证用的IDE的编码格式是utf-8
再然后就是配置JDBC,我使用的是阿里巴巴的开源连接池技术druid
,在配置文件中修改
我的问题就出现在这里,之前都是
url=jdbc:///<数据库名>
没有加过参数,后来看了一些博主的解决办法之后,才知道要加上后面那一大堆。(其实刚开始的时候,我一直写的都是userUnicode=true&characterEncoding=utf8,改完之后还是解决不了问题,超级郁闷,我都已经准备转去Linux了,突然,在一个文章中看到用的是&
而不是&
,改完之后问题瞬间解决,开心。
最后就是,在servlet中设置编码:
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
}
我在找解决办法的过程中看到一种更改mqsql编码的方式:
键入
show variables like "%char%";
查看到:
有两项是latin1
,然后我就跟着教程使用命令:
set character_set_database="utf8"
更改时候,关闭命令窗口。打开命令窗口,再次show variables like '%char%';
,发现
又回到了原来的样子。之后又找到一种方法,这就是在配置文件my.ini
中更改编码格式:
但是更改过之后再次查看,数据库里面的编码格式还是没有变,求解释。