解决: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,在配置文件中修改
批注 2019-07-22 174352.png

我的问题就出现在这里,之前都是url=jdbc:///<数据库名>没有加过参数,后来看了一些博主的解决办法之后,才知道要加上后面那一大堆。(其实刚开始的时候,我一直写的都是userUnicode=true&amp;characterEncoding=utf8,改完之后还是解决不了问题,超级郁闷,我都已经准备转去Linux了,突然,在一个文章中看到用的是&而不是&amp,改完之后问题瞬间解决,开心。

最后就是,在servlet中设置编码:

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	req.setCharacterEncoding("utf-8");
}

我在找解决办法的过程中看到一种更改mqsql编码的方式:
键入

show variables like "%char%";

查看到:
批注 2019-07-22 181039.png
有两项是latin1,然后我就跟着教程使用命令:

set character_set_database="utf8"

更改时候,关闭命令窗口。打开命令窗口,再次show variables like '%char%';,发现
又回到了原来的样子。之后又找到一种方法,这就是在配置文件my.ini中更改编码格式:
批注 2019-07-22 192548.png
但是更改过之后再次查看,数据库里面的编码格式还是没有变,求解释。

发布了28 篇原创文章 · 获赞 19 · 访问量 5235

猜你喜欢

转载自blog.csdn.net/weixin_43912972/article/details/96877222