很常見的新手問題,我來簡單說明一下。基本上要處理utf8需要先注意三個地方。
1.html的標頭宣告編碼
2.程式或html檔案的文件編碼(需要用UTF8無 BOM)
3.mysql的編碼。要注意資料表的編碼。
程式方面則是在注意:
1.運行mysql連結是否有做「set name utf8」這方面有看到你有處理。
2.有無做標頭宣告編碼,其實這跟上面的第一點一樣。
3.資料庫的資料是用程式傳入的。
常碰到的問題:
1.使用phpmyadmin輸入資料,但用程式輸出還是不行的。
這可能是你的phpmyadmin並未設定好,產生偽造utf8的情況,但實際還是用iso編碼寫入。
先用程式寫入資料後再查看phpmyadmin是否可以正常顯示中文。
2.導入問題。導入的sql本身就是編碼錯誤的情況。一般這會比較無解。除非你知道來源的實際編碼。
3.檔案編碼問題。在做第一項測試是,用錯誤的檔案編碼寫入錯誤的格式中文。導至問題更多。
4.瀏覽器被固定顯示編碼而非自動。這個要非常注意。有很多新手常被這給害死。
由以下這段程式,可以顯示出跟提問者一樣的訊息
<?php
//這個檔案用 utf-8 儲存
header('Content-Type:text/html; charset=big5');
echo '怎麼是亂碼';
故可以知道,伺服器送出的內容是正確的(資料庫那邊沒問題)
僅僅只是瀏覽器用 big5 去詮釋 utf-8 的內容
解決方式就是送正確的 header 給瀏覽器
我注意到你的編輯器,請確認檔案編碼。
編碼->UTF8 <---這個也會影響(我目前也是用這個,也吃過這個虧)