MySQL基础配置之mysql默认字符编码的设置
准备用PHP写一个留言板锻炼锻炼,满怀激情做了一天,到用mysql建立数据库的时候,发现新建表的编码为Latin1,中文全是乱码。网上查了一个晚上的资料,试了多种方法都不行。弄到0点钟,实在没脾气了,直接上床睡觉。
今早继续,终于找到了解决的方法。发现原来跟昨天查的资料就那么一点点的差距,原因竟然是我的mysql版本太新了(5.5.25a),泪奔……
那么究竟是如何修改的呢?请看下面(本人为windows系统):
0、终止mysql服务
1、打开mysql配置文件:mysql/bin/my.ini。如果没有就把my-medium.ini复制为一个my.ini即可
2、打开my.ini以后,在[client]和[mysqld]下面均加上default-character-set=utf8,保存并关闭(mysqld中增加如果出错,可以尝试试character-set-server=utf8)
(问题就在这儿,我的只能使用character-set-server=utf-8。原因是:参数“default-character-set=utf8”在较新版本的MySQL 中已移除。)
3、启动mysql服务
4、用命令 SHOW VARIABLES LIKE 'character%'; 可以查询到mysql编码的方式。修改成功后如下:
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 | D:\Program\Web\Wamp\mysql\share\charsets\ |
(刚刚发现在phpmyadmin中用这条命令的时候,value的值可以修改。不知道这样是否可行,下次出现编码问题考虑一下)
以备不时之需,附上Linux下mysql的解决方法:
1、中止MySQL服务(bin/mysqladmin -u root shutdown)
2、在/etc/下找到my.cnf,如果没有就把MySQL的安装目录下的support-files目录下的my-medium.cnf复制到/etc/下并改名为my.cnf即可
3、打开my.cnf以后,在[client]和[mysqld]下面均加上default-character-set=utf8(不知道会不会出现我的问题),保存并关闭
4、启动MySQL服务(bin/mysqld_safe &)
非常简单,这样的修改一劳永逸,今后MySQL一切相关的默认编码均为UTF-8了,创建新表格的时候无需再次设置