利用IDEA编写项目时,IDEA本身会将其转码为UTF-8,故本地写代码时不会乱码,一旦部署到服务器运行环境上就出现中文乱码问题
spirngboot配置文件中数据连接encoding为utf-8,然后发现不生效

用navicat连接后发现数据库本身的编码就是utf8

那就查看一下数据库本身的编码,发现character_set_server不是utf8而是latin1,那问题肯定就是出现在这里了

用命令更改为utf8
set global character_set_server = utf8
重启mysql
systemctl restart mysqld.service
运行一下,发现还是没得用。。。。。。。。
那就想到启动 mysql时是要读取配置文件的,所以我们还可以通过修改配置文件达到目的
vi /etc/my.cnf编辑配置文件 ,在前面加上4行如下(新增的)
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
[client] # 新增的
default-character-set=utf8
[mysql] # 新增的
default-character-set=utf8
[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
# 新增的
character-set-server=utf8
注意最后面还有一行,他是要放在[mysqld]下的
这时候再通过 systemctl restart mysqld.service重启服务
就完成啦
本文详细介绍了在SpringBoot项目中遇到的中文乱码问题解决过程。从检查数据库编码设置,到修改MySQL配置文件,最终实现服务器环境下中文字符的正确显示。
2086

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



