准备用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了,创建新表格的时候无需再次设置
本文详细介绍了在使用较新版本的MySQL(5.5.25a)时遇到的中文乱码问题及其解决方案。通过修改mysql配置文件my.ini中的字符集设置,将default-character-set替换为character-set-server=utf8,成功解决了新建表的编码问题。
1217

被折叠的 条评论
为什么被折叠?



