记录web项目向mysql插入数据中文变为问号的解决方案_更改ubuntu下mysql全局字符集

在Java Web项目部署到云服务器时,出现中文存入MySQL变成问号的问题。经排查,问题出在服务器MySQL字符集上。解决方法是修改配置文件,将MySQL字符集设置为utf8,在Ubuntu 18.04系统上,通过特定命令操作并重启服务即可解决。

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

今天在帮朋友弄一个Java的web项目的时候,发现一个奇怪的问题,同一个项目,在本地运行,数据存在本地的mysql,没有任何问题,但把项目部署到云服务器上,用服务器的mysql时,项目向mysql添加的每一个中文都变成了问号。
经过不断排查问题,最后把问题定位在了服务上mysql字符集上。(这里有个前提:代码都做好了字符集的处理,确保了前后端交互的数据不会乱码)

解决方法:修改配置文件,设置mysql字符集为utf8

本人用的服务器为ubuntu 18.04版本。
输入mysql命令,进入mysql的控制台,输入如下命令查看字符集:

show variables like 'chara%';

如下图:
在这里插入图片描述
通过这些字符集可以看到,问题就出现在值为latin1的字符集上。
接下来进行修改:

回到linux的控制台,输入如下命令打开my.cnf文件(我这个版本路径是etc/mysql/my.cnf,如果没有这个文件,可输入命令 locate my.cnf 查找一下在哪个位置即可):

vim /etc/mysql/my.cnf

在文件中添加如下内容:

[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake

如下图所示:
在这里插入图片描述
完成后保存退出。重启mysql服务:

service mysql restart

一定要记得重启服务,不然上面的配置没有起作用。
到此就已经完成了,再次去查看字符集确认一下:
在这里插入图片描述
latin1已经改为utf8了,这个时候再存中文也没有再变成问号了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值