在 IE 瀏覽器傳遞 get 參數中文遇到亂碼

昨天被丟了一個問題:同一隻 PHP 程式在 Chrome/Firefox 丟中文參數沒問題,怎麼在 IE (Microsoft Internet Explorer) 就會亂碼?

code 大概長這樣,主要是把傳入的參數存入 DB 裡面,資料庫用的是 utf-8 的編碼

問題其實是出在 IE 傳遞參數時會以 ANSI 來編碼 (即便網頁編碼是UTF-8),自然會出現亂碼的問題,基於現在 UTF-8 是主流,所以可以在使用傳入的參數之前使用 PHP 內建的 mb_detect_encoding 做這樣的處理:

{ “UTF-8″, “BIG5″, “GB2312″ } 這段可以依序換成要被識別的編碼,在編碼可以辨識(有被列入)且不是 UTF-8 的情況下會用 PHP 內建的 iconv 來做轉換的動作, 就可以解決這樣的問題啦~