今天解了一個大概10年的網頁老問題
因為小宗宗網頁是用WordPress (WP)架設的, 在早年剛開始架設的時候使用的是WP 2.0版.
當年WP的資料庫還不支援UTF-8, 然後WP 2.2開始導入UTF-8, 但是舊的資料庫裡的資料還是Latin1.
因為不想動資料庫所以就只是把wp-config.php裡面下面這行關掉不讓WP使用UTF-8操作資料庫就可以了.
define( ‘DB_CHARSET’, ‘utf8’ );
這樣也用了十年沒問題, 但最近因為網頁20年準備大改版, 所以就打算修一下這個陳年老問題.
畢竟UTF-8是趨勢.
但是這問題搜尋的關鍵字還不好下, 找很久才發現原來是叫做所謂的double encoded utf-8
嘗試了很多方法都沒成功, 不然就是太複雜了, 看到就不想試.
很多人提到的UTF-8 Database Converter外掛新版WP也是早已不能用了.
當你把wp-config.php裡的utf8打開時, 整個網頁全部都會變成亂碼.
從後台MySQL看到的資料也是亂碼的.
MySQL DB已經是用UTF8編碼.
最後翻了很久才終於在stackoverflow找到高人指點的解法.
兩行指令解決.
https://stackoverflow.com/questions/1344692/fixing-broken-utf-8-encoding
請記得先備份你的資料庫, 然後在你的web page的Linux下用MySQL的tool先把資料庫強制轉成latin1匯出後再強制轉成utf8匯回MySQL資料庫就搞定了.
mysqldump -h localhost -u < MySQL使用者名 > -p --opt --quote-names \
--skip-set-charset --default-character-set=latin1 WP的DB資料庫名 > <自訂的匯出來的檔案名>.sql
mysql -h localhost -u < MySQL使用者名 > -p \
--default-character-set=utf8 WP的DB資料庫名 < <剛剛自訂的會出來的檔案名>.sql
如果你租用的web空間不能進入Linux命令列下指令, 那可以先用phpMyAdmin把整個資料庫匯出後再匯入到你自己架設的Linux web主機的MySQL後打上面指令轉換完成後再匯回你的網站上的MySQL資料庫就可以了.
兩行指令解決多年的問題, 讚.
最後用晚餐結束這回合~
這家牛排NT$200附餐可以選酥皮濃湯或是吐司+濃湯, 而且蠻好喝的.
然後最近Nvidia新出的30系列顯卡完全打爆20系列, 而且還比20系列便宜. 剛買2080ti的人應該覺得想哭.
Leave a Comment