| 各式精緻窗簾,專業窗藝設計師為您服務,量身訂作,專業施工丈量,價格優惠 | 專業室內外油漆粉刷工程,裝潢油漆噴漆工程 平實的價位,客戶的滿意 |
mysql 4.1中文亂碼問題 |
| 房東:阿保 發表時間:2007-03-06 | [檢舉] |
|
大部份人升級wordpress 1.5時碰到的問題都是中文亂碼,尤其是如果原本用 mysql 4.0 而同時要升級到 mysql 4.1的話。 主要原因是mysql 4.1在語系方面增加了許\多功\能,它可以設定語系的層次從最底層的 server, database 到單一 table, column, connection 都可以設定,而除了語系之外,還可以指定搭配不同的 collation,所以組合百百種,只要一個錯了就難逃亂碼的命運。(而之前用mysql 4.0為何不用設定也不會出問題呢?主要原因是那時預設是 latin-1,正好相容大部份的utf-8字元,所以不常碰到亂碼) 所以如果你的情況跟我一樣,同時要將 wordpress 從 v1.2升級到 v1.5, 然後mysql也要 v4.0 升級到 v4.1 的話,請看下面流程: 0. 先進phpmyadmin找到可輸入 sql query的畫面,然後鍵入: show variables like ‘%character%’; 這句話會顯示目前資料庫使用的語系設定,一般國外的網站或剛裝好的 mysql 4.1預設都是 latin-1。 1 新增wordpress blog要用的database名稱,例如 myblog. 如果你熟悉 phpmyadmin 的操作,在畫面上就可以選擇這個新database 要用的語系, charset 請選擇 UTF-8 Unicode (utf8) collation 請選擇 utf8_general_ci (ci 代表 case insensitve 大小寫沒差) 2、改 database語系,同樣在 phpmyadmin 的query畫面鍵入下面兩行: 如果你在上一步中沒正確選擇語系,或是在看到本文前已經先建好database了也沒關係,用下面語法可以改回來 alter database myblog character set utf8; 3、匯入舊的 sql 到這�堿陘螸ysql�堶惜w經有一個 utf-8的 database, 可以準備倒資料進去了,把舊版的sql 文字檔直接copy-paste或上傳到 phpmyadmin即可。注意要告訴phpmyadmin這個文字檔是 utf-8 編碼的才能正確匯入。 根據我的經驗,總是會有一兩個小地方出問題,可能要手動修改一下內容,例如將某些中文字先換成英文,等倒進mysql後再進wordpress 改回來。 4、改 wp-db.php 的設定 前面曾經提過,mysql的語系設定是多層次的,前面我們把database與table的語系都設定正確,但程式與mysql連線時的語系則是由 connection 來決定,這部份就要改wordpress的程式碼,在 \\wp-includes\\wp-db.php 的第 44行加上: $this->query(”SET NAMES ‘utf8′”); 這句話會同時設定 client, results, connection三者使用的語系為 utf-8。 *最後檢查是否全部改成 utf-8 show variables like ‘%character%’; 此時你應該會看到大部份欄位都是utf-8了,除了 server 這項之外,因為我是用別人的hosting主機,所以沒法兒改這部份,但平常做案子時大部份都可以直接控管mysql,此時就可以用 my.ini 設定: [mysqld] default-character-set=utf8 告訴mysql server啟動時要用 utf-8即可。 附帶一提,經過這樣調校的mysql,連接 flash - amfphp - php - mysql 也完全沒問題,可以互傳中文/日文。 |
廣利不動產-板橋在地生根最實在--新板特區指名度最高、值得您信賴的好房仲 完整房訊,房屋、店面熱門精選物件,廣利不動產 優質仲介,房屋租賃、買賣資訊透明,交易真安心! 廣利不動產-新板特區指名度最高、值得您信賴的好房仲 您的托付,廣利用心為您服務 |
| 1 樓住戶:達人 發表時間:2007-06-08 | [檢舉] | |
|
mysql 會出現中文亂碼的原因不外乎下列幾點: //database connection details. $host = "localhost"; $link = mysql_connect($host, "xxx", "xxx"); mysql_query("SET NAMES 'utf8'"); mysql_select_db("your_table_name_here", $link); ?>
|
| 2 樓住戶:新手 發表時間:2007-06-08 | [檢舉] | |
|
< ? //database connection details. $host = "localhost"; $link = mysql_connect($host, "xxx", "xxx"); mysql_query("SET NAMES 'Big5'"); mysql_select_db("your_table_name_here", $link); ?> 用這個方法也可以.. mysql_connect 後有加上一個 "set names ‘Big5′ " 指令 告訴 mysql 這個 connection 之後的連線內容都要使用Big5 經過這樣設定後.. 通常就可以解決大部份問題 |