向mysql数据库插入数据显示乱码的问题
在做一个java web工程时,有时会碰到在向数据库添加数据库时,结果出现乱码”???“的问题。针对该问题的主要解决办法有几种:
- 第一:确保是否添加了字符集过滤器
在项目的web.xml里,添加以下代码解决乱码:
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<!-- <async-supported>true</async-supported> -->
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
- 第二:确保创建的数据库是否配置支持中文,如下图所示进行配置:
- 第三:如果仍然乱码,则就是mysql的编码问题(mysql默认编码为:latin1)
查看mysql编码配置:default-character-set=latin1
说明数据库不支持中文编码,所做的操作就是:
在mysql的安装目录下,找到“my.ini”(windows系统下后缀为ini, Mac系统下后缀为cnf, )的配置文件,以记事本方式打开:
找到客户端配置 [client],在下面添加 “default-character-set=utf8”,后找到 [mysql] ,在下面添加 “default-character-set=utf8”,然后搜索“default-character-set”,把所有的default-character-set 都改为“utf8“(注:通常在改了[client]和[mysql]之后,其余位置的也需要改),如下如所示:
修改三处utf8
# CLIENT SECTION
# ----------------------------------------------------------------------
#
# The following options will be read by MySQL client applications.
# Note that only client applications shipped by MySQL are guaranteed
# to read this section. If you want your own MySQL client program to
# honor these values, you need to specify it as an option during the
# MySQL client library initialization.
#
[client]
port=3306
//将这一句换成下边的一句
default-character-set=latin1
//换成的一句
default-character-set=utf8
[mysql]
//将这一句换成下边的一句
default-character-set=latin1
//换成的一句
default-character-set=utf8
.........
#Path to the database root
datadir="F:/MySql/Data/"
# The default character set that will be used when a new schema or table is
# created and no character set is defined
//将这一句换成下边的一句
character-set-server=latin1
//换成的一句
character-set-server=utf8
# The default storage engine that will be used when create new tables when
default-storage-engine=INNODB
# Set the SQL mode to strict
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
修改过后,重新启动mysql服务;
然后再向数据库添加数据,乱码问题将不会出现。

在Java Web开发中,遇到向MySQL数据库插入数据时显示乱码的问题,通常可以通过三个步骤解决:一是在web.xml中添加字符集过滤器;二是检查数据库配置是否支持中文;三是确认并修改MySQL的字符集设置为utf8,重启服务。
1127

被折叠的 条评论
为什么被折叠?



