Home / mysql big5 轉 utf-8 速記

當網站改版時,要把以往mysql的big5資料轉換成utf-8時,常常會是個頭痛的問題。

要轉換,你的新舊資料庫都有phpmyadmin的介面,另外還得有big5->utf-8的工具,在windows上中文轉換工具首選為ConvertZ,在linux上得轉碼工具為iconv。

首先,檢查看看phpmyadmin在輸出csv檔案時會不會有問題。
stripslash為把字串去掉反斜線的函式,但是在處理big5碼的時候便會碰到難題,他會將big5的斜線去掉,以至於轉出來的文字變成亂碼。新版的phpmyadmin已經沒有這個問題,但是要看看舊版有沒有在轉出的時候加上這個函式,得把他去掉
編輯 phpmyadmin/libraries/export/csv.php
function PMA_exportData裡頭,找到while迴圈,並找找看有沒有stripslash的function:
while ($row = PMA_DBI_fetch_row($result))
.....
$row[$j] = stripslashes($row[$j]);

把function拿掉,留下$row[$j];就好。

第二,輸出csv資料。到phpmyadmin的輸出頁面,針對舊資料庫一次一個表格輸出。調成csv匯出,存檔。

第三,匯出資料庫的結構schema。到phpmyadmin的輸出介面,針對全部的表格,調成SQL輸出,並且不要包含資料,下載回來的是單純的sql結構檔。

第四,打開convertz,對剛剛轉下來的csv轉換成utf8的動作。

第五,到新資料庫,先把剛剛.sql的結構給匯入,建立好空的table格式。如果在mysql4.1以後,如果有預設連線校對,匯入的表格統統都會用該連線校對設定。

第六,一個一個資料表,匯入剛剛存下的csv檔。

最後,檢查看看新資料庫有沒有亂碼。

這應該是個笨方法,不過目前沒有出現中文轉換的問題。如果一直試不成功,不妨也可以試看看這個笨方法。

re: mysql big5 轉 utf-8 速記

請問一下
我按照上面的方式匯入
卻發生以下的錯誤訊息
Invalid parameter for CSV import: 「下一行」使用字元:
請問是什麼問題呢

re: mysql big5 轉 utf-8 速記

自問自答
用新版的phpmyadmin即可解決
謝謝