版权声明:本文为博主原创文章,未经博主容许不得转载。mysql
今天在作ssh的博客项目时发现mysql数据库中的中文显示为问号,网上查阅了不少资料,都不是很全,因此我总结一下,供你们参考和本身复习。linux
1.个人计算机配置: windows系统(linux没试过) mysql 5.6sql
mysql中文显示乱码或者问号是由于选用的编码不对或者编码不一致形成的,我是经过修改my.ini配置文件。(配置文件在安装的根目录下以下图)数据库
原来的为my-default.ini (复制里面的内容改成my.ini,也就是从新命名)windows
2.而后在my.ini以下修改服务器
[mydqld]和[client]段加入ssh
default-character-set=utf8 (有的版本不支持default-character-set=utf8,用character_set_server=utf8来取代 default-character-set=utf8便可)编码
若是没有[client]就手工加入[client]段spa
【1】在[client]节点下添加 (这个若是是另外一种character_set_server=utf8 这样写个人会报错1067【mysql服务没法启动】,你们能够试试) (这个是客户端的编码配置)
default-character-set=utf8
【2】在[mysqld]节点下添加 (这个是服务器端编码的配置)(注:collation是排序方式)
character-set-server=utf8
collation-server=utf8_general_ci .net
修改后以下图所示:
3.而后重启mysql便可
1)计算机---->右键--->管理---->服务和应用程序--->服务--->找到mysql便可
2)我比较喜欢用命令行
以管理员身份运行cmd.exe,进行以下操做。
关闭服务 net stop mysql
开启服务 net start mysql
END: 而后就能够来查看是否变了编码格式。仍是在cmd中
1)输入 mysql -u root -p 进入mysql数据库
2)键入密码:*****(本身的密码,没有的话直接回车键,嗯其余状况如忘了root密码百度去orz。。)
3)show variables like 'char%'; 显示编码格式
下图一为未修改my.ini配置文件的编码文件latin1(即ISO-8859-1),图二为已经修改过的。
图一(未修改)
图二(已修改编码)
能够看出都已经更正为utf8了,这样新创建的数据库缺省就是UTF8编码了
彩蛋:
而后你觉得到这就完了么,并无。。
接下来你会发现报这个错以下所示。
上述错误是什么引发的呢,仍是由于编码不正确啊!由于使用了已经建立好的数据库和表但没有更改成utf-8;
经过如下命令查看表的编码为Latin1:
show create table tablename(数据库名.表名);
修改方法:
ALTER DATABASE `数据库` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
ALTER TABLE `数据表` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci (注:此句把表默认的字符集和全部字符列(CHAR,VARCHAR,TEXT)改成新的字符集:)
数据库编码的修改和查询
总结:也就是要更改数据库的默认字符集为utf8,更改表的字符集为utf8,更改列的字符集为utf8,而后从新启动MYSQL服务;
最后大功告成!
附MySql表、字段、库的字符集修改及查看方法的连接:http://www.jb51.net/article/68856.htm