mysql插入中文是乱码,出现???号

最近开始新的项目,新项目使用mysql数据库。环境都搭好了,一切准备就绪系统跑起来了,结果发现在系统中新建一条数据出现了问题。

针对这个我首先猜测是mysql编码的问题,在cmd中使用mysql的命令行查看发现mysql中的编码方式是latin1的编码方式。于是乎看了项目的编码方式是utf8 的编码方式。所以问题应该是mysql 的编码方式的问题。

show variables  like 'character%'; 命令查看mysql 的编码方式

然后网上有一堆关于修改编码方式的文章,通常都是使用命令行方式修改,


MYSQL>set character_set_client = ''utf8'' ; 

MYSQL>set character_set_connection = ''utf8'' ; 

MYSQL>set character_set_results= ''utf8'' ; 

MYSQL>set character_set_server= ''utf8'' ; 

通常使用命令执行之后,再一次使用show variables like 'character%' ;可以看到编码编码都做了相应的改变。

本能的我想重新启动mysql服务,重新部署应用发现还是插入中文是出现???

这时我在一次看一下mysql 的编码方式,发现mysql的编码方式已经发生了改变,编码方式用变成原来默认的lantin1编码方式了。

这是怎么回事,我百思不得其解,可能是更新的时候没有commit的原因吗? 我重新有一次试了一遍,发现还是存在相同的原因。

网上百度了一下,原因,发现这种使用命令行的方式更改编码是一种热更改方式,及不能电脑重启或者服务重新启动都会将原来的设置还原的现象。

最终还是使用永久更改方式将mysql编码方式进行更改,就是改变mysql安装目录下的my.ini文件,添加

[client]

port=3306

[mysql]

default-character-set=utf8

character-set-server=utf8

你可能感兴趣的:(mysql插入中文是乱码,出现???号)