on Sep 4th, 2007DreamHost 上 MySQL 的编码配置

想方设法的让编码都是 utf8 就好了。

修改你用户目录下的 .my.cnf 文件,在以下部分添加:

1
2
3
4
5
6
7
8
9
10
[client]
default-character-set = utf8
[mysqld]
init-connect='SET NAMES utf8'
default-storage-engine = INNODB
character-set-server = utf8
collation-server = utf8_general_ci
default-character-set = utf8
[mysql]
default-character-set = utf8

然后

1
mysql -u username -pPassword -h mysql_host_address

进入 mysql 的命令行。

1
2
3
use databaseName
show variables like '%char%';
show variables like '%collation%';

如果有不是 utf8 的,就

1
alter database default character set utf8;

一下,再重复上面的命令,还有不是的,直接

1
set Variable_name_You_Want_to_Change=utf8;

我的 character_set_server 和 collation_server 这两个变量设置完成后,重新进入又变成 latin1 的啦,不知为何,不过不影响。 只要确保

1
2
3
character_set_connection
character_set_database
character_set_results

都是 utf8

1
2
collation_connection
collation_database

都是 utf8_general_ci 就应该没啥问题了。

一键安装的 wordpress 导入数据在 phpMyAdmin 里面是乱码,其实根本原因还是数据库编码设置有问题,不过我真不知道还应该在哪里设置了。幸好有变通的方法,网上到处都有,就是在 wp-includes/wp-db.php 里面大约 61 行的地方加入

1
$this->query("SET NAMES 'utf8'");

让所有编码和校验都为 utf8 就可以了。

如果还有乱码或别的问题,就在 phpMyAdmin 检查检查,手动修改吧。

更新(2008.03.23):升级 WordPress 到 2.3.3 后,有更优雅的乱码解决方案

2 Responses to “DreamHost 上 MySQL 的编码配置”

  1. [...] 今天把 WordPress 一键升级到 2.3.3 之后,乱码又出现了,倒是已经见怪不怪,每次升都会遇到,解决办法也简单。在正确配置 mysql 的编码以后,修改 wp-db.php 这个文件也就可以了。但是今天,却不管用了。 [...]

  2. [...] django sync 数据库之前,检查数据库编码是否 utf-8 友好的,如果不是,改之,然后再 sync,这样就不用为编码的事情发愁了。方法可以参考我的:DreamHost 上 MySQL 的编码配置。 [...]

Trackback URI | Comments RSS

Leave a Reply