對這文章發表回應
發表限制: 非會員 可以發表
發表者: 冷日 發表時間: 2008/3/19 6:32:37
mysql big5 轉 utf-8 速記 裡頭,找到while迴圈,並找找看有沒有stripslash的function:
就好。
當網站改版時,要把以往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 ($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檔。
最後,檢查看看新資料庫有沒有亂碼。
這應該是個笨方法,不過目前沒有出現中文轉換的問題。如果一直試不成功,不妨也可以試看看這個笨方法。