向mysql插入数据显示乱码的问题

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

向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服务;
然后再向数据库添加数据,乱码问题将不会出现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值