MySQL插入中文数据出现?号,解决办法

运行环境:win10
mysql版本:Mysql5.6
做一个项目的时候,向数据库插入中文数据,一直都是?
问过度娘之后,她提供的以下办法:
1.在连接数据库的url后加:?useUnicode=true&characterEncoding=UTF-8
比如:

url = "jdbc:mysql://localhost:3306/login?useUnicode=true&characterEncoding=UTF-8";

2.检查servlet页面编码

response.setContentType("text/html;charset=utf-8");
        request.setCharacterEncoding("utf-8");

3.检查JSP页面编码。
4.查看数据库属性
这里写图片描述
在这些全部都尝试过,还是?,最后找到了使用命令查看字符编码
1.点击windows图标,找到mysql,选择“Mysql5.6 command line Client”
打开之后输入数据库密码,
2.使用命令:use 数据库名(比如:use login)
3.输入命令:show variables like ‘%char%’; (查看数据库编码)
这里写图片描述
果然有一项不对,虽然命令行修改很容易,只需要两行代码

set character_set_database=utf8;  
set character_set_server=utf8; 

但是,在重启数据库服务之后,这些设置又会恢复到默认latin1.
怎样让他们永久变为utf-8呢,搜了很久,终于找到了
解决方法:在mysql的配置文件my.ini写下character-set-server=utf8就好了
但是免安装版的my.ini在哪?
免安装mysql的目录下只有一个my-default.ini,而且打开也没有character-set-server
不急,先把它拷贝一份,并重命名为my.ini,这样该目录下就有了my.ini和my-default.ini两个ini文件
然后打开my.ini加上以下几行代码

[client]  
default-character-set=utf8  
[mysqld]  
character-set-server=utf8 

具体位置如下:
这里写图片描述
这个时候再重新启动mysql的服务,就会发现编码就不会回复默认了
这里写图片描述
最后,附上数据库服务启动和关闭的地方:
1.win+R
2.输入:services.msc,回车
3.就能找到mysql服务啦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章