解决:JavaWeb项目中向数据库插入中文数据时出现乱码问题

情景在现

这个暑假,我和小伙伴们在搞一个音乐论坛,在把文章内容从前端从到数据库中后,打开数据库一查询,出现了一堆***???***,我的内心也是出现一万句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,在配置文件中修改
解决:JavaWeb项目中向数据库插入中文数据时出现乱码问题_第1张图片

我的问题就出现在这里,之前都是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%";

查看到:
解决:JavaWeb项目中向数据库插入中文数据时出现乱码问题_第2张图片
有两项是latin1,然后我就跟着教程使用命令:

set character_set_database="utf8"

更改时候,关闭命令窗口。打开命令窗口,再次show variables like '%char%';,发现
又回到了原来的样子。之后又找到一种方法,这就是在配置文件my.ini中更改编码格式:
解决:JavaWeb项目中向数据库插入中文数据时出现乱码问题_第3张图片
但是更改过之后再次查看,数据库里面的编码格式还是没有变,求解释。

你可能感兴趣的:(解决:JavaWeb项目中向数据库插入中文数据时出现乱码问题)