查看完整版本: [轉貼]MySQL升級5.0與UTF-8之相關中文解決方法

chun 2009-6-3 15:03

[轉貼]MySQL升級5.0與UTF-8之相關中文解決方法

http://dz.adj.idv.tw/thread-573-1-1.html<br>從MySQL4.0升級至5.0。<br>
<br>
首先把資料dump出來 。由於先前用4.0時我的資料是存成latin1,不管是Big5或是wordpress的UTF-8存進去後都是變成lantin1,所以dump出來後要用iconf或piconf把他轉成UTF-8,記得dump出來時要加上 --<strong><i>default-character-set=latin1</i></strong><br>
如果原先是Big5的資料,像我的Coppermine Photo Gallery,dump出來後就直接把Big5轉成UTF-8即可<br>
<blockquote>#mysqldump -u帳號 -p 資料庫 &gt; output.sql&nbsp;&nbsp;--default-character-set=latin1 <br>
#piconv -f big5 -t utf8 output.sql &gt;utf8.sql<br>
<br>
如果原先是UTF-8的資料,像是wordpress,dump出來後要先轉成Big5後,再把他轉成UTF-8,因為原先dump出來的<font color="red">是偽裝成UTF-8的lantin1不是真正的UTF-8</font><br>
<br>
#mysqldump -u帳號 -p&nbsp;&nbsp;資料庫 &gt;output.sql --default-character-set=latin1 <br>
#piconv -f utf8 -t big5 output.sql &gt; big5.sql<br>
#piconv -f big5 -t utf8 big5.sql &gt;utf8.sql<br>
</blockquote>接著MySQL5.0灌好後,MySQL的my.cnf設定檔內要加入以下設定<br>
<br>
[client]<br>
default-character-set=utf8<br>
[mysqld]<br>
default-character-set=utf8<br>
default-collation=utf8_general_ci<br>
<br>
但也有看到資料說[mysqld]那邊加上 default-character-set=utf8跟
default-collation=utf8_general_ci後,一些舊的使用Big5編碼的php程式,又沒有加入連資料庫時指定的編碼方式的
相關code的話,那些程式就會爛掉,所以目前我是沒有加上那兩行。<br>
接著建立空的資料庫準備把dump出來的資料import進去,SQL語法應該類似下面這樣,要加上<br>
DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci<br>
CREATE DATABASE `abc` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;<br>
<br>
我是用phpMyAdmin建立資料庫的,建立時”校對”要選<strong>utf8_general_ci</strong><br>
<br>
再來就是把剛剛dump出來後的sql檔在import進去了,這裡有兩點要注意的。<br>
1.剛剛dump出來的sql檔如果原先是Big5里面會有一些像是許功蓋這些字後面會多了一個”<strong>\</strong>“,記得用文字編輯器把他消掉<br>
2.import進去時記得還要先修改一下dump出來的sql檔,在最前面加上<br>
<br>
SET NAMES utf8;<br>
SET CHARACTER_SET_CLIENT=utf8;<br>
SET CHARACTER_SET_RESULTS=utf8;<br>
<br>
再來把每個資料表後面的<br>
<br>
TYPE=MyISAM;<br>
改成<br>
ENGINE=MyISAM DEFAULT CHARSET=utf8;<div class="quote"><h5>引用:</h5><blockquote>使用 vi 時...可以使用取代的語法..將全部 latin1 的字眼全部改為 utf8<br>
:1,$ s/latin1/utf8/g</blockquote></div>都改好後就可以把他import進去了<div class="quote"><h5>引用:</h5><blockquote>#mysql -u帳號 -p 資料庫 &lt; utf8.sql --default-character-set=utf8</blockquote></div>不過以上實在有點麻煩,所以我把多餘的”<strong>/</strong>“消掉後,就直接用phpMyAdmin把他import進去了,import時記得文字編碼檔案要選utf8即可<br>
順便記一下寫php時如是配合UTF-8的資料庫的話該注意,在真正送出query前要先加入以下三行 <br>
<br>
mysql_query(”SET NAMES ‘<font color="#ffa34f"><strong>utf8</strong></font>‘”);<br>
mysql_query(”SET CHARACTER_SET_CLIENT=<font color="#ffa34f"><strong>utf8</strong></font>“);<br>
mysql_query(”SET CHARACTER_SET_RESULTS=<font color="#ffa34f"><strong>utf8</strong></font>“);<br>
<br>
檢查語系的SQL語法<br>
show variables like “%character%”;<br>
<br>
本文From: <a href="http://blog.leolo.cc/2006/02/06/134/" target="_blank">http://blog.leolo.cc/2006/02/06/134/</a><br>
參考 : <a href="http://a-wei.net/archives/4" target="_blank">http://a-wei.net/archives/4</a><br>
<br>
頁: [1]
查看完整版本: [轉貼]MySQL升級5.0與UTF-8之相關中文解決方法