SHOW VARIABLES LIKE 'character_set_%'
xmapp 1.7的配置文件在 \xampp\mysql\bin\my.cnf
xmapp 1.8的配置文件在 \xampp\mysql\my.ini
停止mysql服务后,改配置文件,改完后重新启动mysql服务就ok
对于mysql 5.1以上版本,在配置文件
在 [mysqld]下面加上character-set-server = utf8
5.0以前的版本,没试过,网上经验是
在[mysqld]下面加上default-character-set=utf8
Mysql安装的时候如果没有设置utf8编码,而是使用了默认的latin1,则默认情况下,创建的数据库和表也默认latin1,创建表的时候显式指定utf-8也可以,也能存储中文字符。
不过,如果在一个latin1的database下面访问一个utf-8的database里面的表里面的中文,同样可能出现乱码。
最近用Toad fro MySQL Freeware查询中文字段都没有问题,但是修改数据库的操作中涉及的中文都导致了乱码,找了很久的解决办法
1)背景知识——MySQL的字符集设置。
mysql4.1及其之后的版本,对字符集的支持分为四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection):
character_set_server:这是设置服务器使用的字符集
character_set_client :这是设置客户端发送查询使用的字符集
character_set_connection :这是设置服务器需要将收到的查询串转换成的字符集
character_set_results :这是设置服务器要将结果数据转换到的字符集,转换后才发送给客户端
整个过程:
- client(如php程序)发送一个查询;
- 服务器收到查询,将查询串从character_set_client 转换到character_set_connection,然后执行转换后的查询;
- 服务器将结果数据转换到character_set_results字符集后发送回客户端。
你可以用下边两条命令查看一下系统的字符集和排序方式设定:
SHOW VARIABLES LIKE 'character_set_%';
SHOW VARIABLES LIKE ‘collation_%’;
假如你的系统和php网页是utf8编码,你可以将mysql的编码由默认的latin1改为utf8.
不过原来的数据,假如你用4.0,mysqldump出来的数据是latin1的编码,你再导入就会出现乱码。如果你原来的数据非常宝贵,那你还是用latin1编码吧。