MySQL 5.5版本解决中文乱码问题时my.ini内[mysqld]项中不能再写default-character-set=utf8

来看看如何解决乱码问题:

在mysql中默认字符集是latin1,

想要设置字符集为uft-8,可以在 my.cnf 文件中添加以下设置:

·[client]

default-character-set=utf8

·[mysqld]

default-character-set=utf8
skip-character-set-client-handshake #此处是忽略客户端的字符集,使用服务器的设置

(skip语句和client中的default选一个)

当然你可以在建立数据库是规定字符集:

create database db_name default character set utf8 callate utf8-general-ci;

也可以在链接数据库前设置:

set names 'utf8';

重点在红字上,加了skip-character-set-client-handshake,client里面就不用加default了

show variables like 'characte%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 | 
| character_set_connection | utf8 | 
| character_set_database | utf8 | 
| character_set_filesystem | binary | 
| character_set_results | utf8 | 
| character_set_server | utf8 | 
| character_set_system | utf8 | 
| character_sets_dir | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+

但是根据以上的配置过了后,mysql就无法启动了,这是为什么呢?往下看:  


在5.1版本时,为了解决中文乱码问题设置默认字符集为utf8时,在my.ini内的 [mysql] 和 [mysqld] 项中都是写:

default-character-set=utf8

到了5.5版本, [mysql] 项内可以这么写, [mysqld] 项内这么写在启动MySQL服务时会有1067错误,经查询发现这里必须要这样写:

character-set-server=utf8

目前已知5.1和5.5有这么一个不同之处,且是从5.5的安装版本自动生成的my.ini文件中看出的。配置免安装的5.5版本还需要进一步的实验。


by 雪洁 2013-12-08 03:54:56 15825 views

4 Comments

网友 2015-11-02 09:09:41
顶啊,网上那么多1067错误解决办法都不行,就是这里出了问题,感谢楼主
雪洁 2015-11-02 09:11:00
能帮助到你就好 就没白写^_^
麦兜兜 2016-06-12 15:27:38
真的太感谢了,,
雪洁 2017-03-09 20:30:32
客气了~
罗罗 2016-10-27 16:17:57
character-set-server=utf8
解决了不能启动的问题,乱码问题解决了,谢谢。
雪洁 2017-03-09 20:29:52
不客气^_^
yinc 2017-03-09 20:08:50
mysql 5.7.1 my.ini中找不到default-character-set=utf8也是这么配置吗
我来说几句

相关文章