2008-02-11, 02:08 PM
|
#1
|
|
论坛义工
注册日期: 2006-07-05
帖子: 477
精华: 0
现金: 1632 金币
资产: 1632 金币
声望: 16 
|
从MySQL4.0升级至5.0。
|
首先把资料dump出来 。由於先前用4.0时我的资料是存成latin1,不管是Big5或是wordpress的UTF-8存进去后都是变成lantin1,所以dump出来 后要用iconf或piconf把他转成UTF-8,记得dump出来时要加上–default-character-set=
如果原先是Big5的资料,像我的Coppermine Photo Gallery,dump出来后就直接把Big5转成UTF-8即可
#mysqldump -u帐号 -p –default-character-set=latin1 资料库 >output.sql
#piconv -f big5 -t utf8 output.sql >utf8.sql
如果原先是UTF-8的资料,像是wordpress,dump出来后要先转成Big5后,再把他转成UTF-8,因为原先dump出来的是偽装成UTF-8的lantin1不是真正的UTF-8
#mysqldump -u帐号 -p –default-character-set=latin1 资料库 >output.sql
#piconv -f utf8 -t big5 output.sql > big5.sql
#piconv -f big5 -t utf8 big5.sql >utf8.sql
接著MySQL5.0灌好后,MySQL的my.cnf设定档內要加入以下设定
[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
default-collation=utf8_general_ci
但也有看到资料說[mysqld]那边加上 default-character-set=utf8跟 default-collation=utf8_general_ci后,一些旧的使用Big5编码的php程式,又沒有加入连资料库时指定的编码方式的 相关code的话,那些程式就会烂掉,所以目前我是沒有加上那两行。
接著建立空的资料库準备把dump出来的资料import进去,SQL语法应该类似下面这樣,要加上
DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
CREATE DATABASE `abc` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
我是用phpMyAdmin建立资料库的,建立时”校对”要选utf8_general_ci
再来就是把刚刚dump出来后的sql档在import进去了,这裡有两点要注意的。
1.刚刚dump出来的sql档如果原先是Big5里面会有一些像是许功盖这些字后面会多了一个”\“,记得用文字编辑器把他消掉2.import进去时记得还要先修改一下dump出来的sql档,在最前面加上
SET NAMES utf8;
SET CHARACTER_SET_CLIENT=utf8;
SET CHARACTER_SET_RESULTS=utf8;
再来把每个资料表后面的
TYPE=MyISAM;
改成
ENGINE=MyISAM DEFAULT CHARSET=utf8;
都改好后就可以把他import进去了
#mysql -u帐号 -p 资料库 < utf8.sql
不过以上实在有点麻烦,所以我把多余的”/“消掉后,就直接用phpMyAdmin把他import进去了,import时记得文字编码档案要选utf8即可
顺便记一下写php时如是配合UTF-8的资料库的话该注意,在真正送出query前要先加入以下三行
mysql_query(”SET NAMES ‘utf8‘”);
mysql_query(”SET CHARACTER_SET_CLIENT=utf8“);
mysql_query(”SET CHARACTER_SET_RESULTS=utf8“);
检查语系的SQL语法
show variables like “%character%”;
|
|
|
|