MySQL 5 使用 UTF-8 配合 WordPress 的問題

时间:2007-01-04 09:48:35   来源:  作者:whsong  点击:次  出处:技术无忧
关键字:MySQ

MySQL 5 使用 UTF-8 配合 WordPress 的問題(附帶浮動 CSS 之謎)
文/Alex Wang

果然「Ignorance is a bliss」。不知道、不清楚、不明白、不去碰它,就不會有問題。一研究,才發現原來問題那麼多。這邊先筆記以下,改天繼續。

完成:刪掉 MySQL 預設匿名使用者、刪除多餘使用者
完成:把 MySQL 裡的資料庫換成 UTF-8。參考:如何修正 MySQL 資料庫的 encoding [Jeffhuang.idv.tw]、MySQL 4.1.x SET NAMES UTF8 [blog.dragon2.net]、wordpress 1.5 升級注意事項──中文亂碼篇 [ria.richtechmedia.com]、mysql 4.1 中文亂碼第二擊 [ria.richtechmedia.com]
為什麼我的 CSS 浮動區塊就是搞不好?

MySQL 編碼方面

目前發現 MySQL 5.0.11-beta 裡用的都是 latin1。目前心得是依照這個步驟改:

mysqldump –default-character-set=latin1 來備份所有資料庫(確認過用這個丟出來的檔案,可以直接用 Vim 與 EmEditor 當成 UTF-8 開啟,中文都正常顯示)
把各資料庫刪除(也就是 WordPress……當然系統方面的東西不碰他)
把備份資料庫丟回去
不過不確定可行,所以還沒做。最終目標是全 UTF-8 的資料庫後端,所以還得改 my.cnf──但是我就是找不到這個檔案在哪裡呀!

CSS 方面的問題

搞不定這邊出現的浮動區塊問題。

MySQL 編碼問題更新

終於完成了(我用 FreeBSD 5.3 + MySQL 5)。問題簡單來說,就是 MySQL 預設內部是用 latin1 處理資料,所以外表看似 UTF-8 的 WordPress 站實際資料卻並非純正 UTF-8。用 mysqldump 看就會發現全都是亂碼,直接在 mysql 裡 SELECT 出來的也全是亂碼。

先進 mysql 看編碼:mysql> show variables like '%character%';,都是 latin1 的話就要改
備份 WordPress:mysqldump -u root -p --default-character-set=latin1 --add-drop-table 資料庫名稱 > 備份檔名稱
把資料庫編碼改過:mysql> ALTER DATABASE DEFAULT CHARACTER SET utf8;
修改 /etc/my.cnf,加入:

[mysqld]
default-character-set=utf8
[mysql]
default-character-set=utf8

重新啟動 MySQL:/usr/local/etc/rc.d/mysql-server.sh restart
先備份一份剛才的資料庫備份檔,然後手動編輯把裡面的 latin1 改成 utf8;一個是最開頭的「SET NAMES latin1」,再來就是建立每個表格時的「ENGINE=MyISAM DEFAULT CHARSET=latin1;」
改好之後把資料庫送回去:mysql -u root -p 資料庫名稱 < 改過的備份檔案名稱
最後,如果是用 root 或其他 SUPER 權限帳戶存取 MySQL 的話,還得修一下 WordPress 的 wp-includes/wp-db.php,在連接資料庫後自己 set names:搜尋 $this->select($dbname); 然後在前一行加入 mysql_query("SET NAMES 'UTF8'"); 即可。(clsung 說:「具有 SUPER 權限的人,加在 my.cnf 是沒用的。」我想大概只要另外給一個使用者供 WordPress 專用,就不用修 wp-db.php 了吧……話說回來,只因為懶得研究如何新增使用者、授予權限,就讓 WordPress 一直用 root 去連 MySQL,我也實在是太沒警戒心了。)
如果出問題,可以從備份還原:mysql -u root -p 資料庫名稱 < 備份檔名稱
如此就大功告成了,從裡到外每一環節都是 UTF-8,在 mysql 裡直接 SELECT 出來的也都是正確的 UTF-8 中文了。總共兩天的時間,加起來花了好幾個小時,雖然有點累,但也成果豐碩,學了不少東西。這種滿足感,可是玩 Windows 很少有的。

技术 无忧 pc51.Net


相关文章

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面