2007年8月25日

【PHP】解決PHP+Mysql5.x亂碼問題

相信這是初學者最常遇到的問題吧!!

往往在自己電腦裡執行都正常(假設使用者電腦的Mysql版本是4.x或以下版本)

傳上server後卻都是亂碼(假設server上的Mysql版本是5.x)

我第一次遇上時也是摸不著頭緒

還是我的老朋友google幫了我

有個觀念一定要先搞清楚

亂碼問題一定跟編碼有關

用什麼編碼存進資料庫,就用什麼編碼秀出來

好了

有了這觀念

問題就好解決多了



在使用者層面來說

可以先檢查網頁的charset

如果網頁的charset是utf-8

那麼post的資料就都是utf-8的編碼

如果不想更改charset又想使post出去的資料是自己想要的編碼

可以使用iconv來轉換

ex:iconv('原始編碼','欲轉換的編碼','欲轉換的字串')



再來伺服器層面

開啟phpmyadmin檢查Mysql系統變數

如果您並無管理者權限

無法更動Mysql的系統變數值

那麼php在連結mysql時可加入以下語法

mysql_query("SET NAMES 'big5'");

mysql_query("SET CHARACTER SET big5");

mysql_query("SET CHARACTER_SET_RESULTS=big5'");

big5可任意更換成您要的編碼語系

以確保抓出來或存進去的資料為你要的



關於這方面的觀念我搞了好久才稍微有個頭緒

如以上所說有誤

歡迎指正^^

沒有留言:

張貼留言