對于網站的開發者來說,有時候需要處理中文字符集的問題,比如常見的GBK和UTF-8編碼。 在處理其中一個編碼的時候,需要將其轉化成另一個編碼,本文主要介紹如何使用php將GBK轉化成UTF-8編碼。
在實際項目中,特別是咨詢、留言等需要輸入漢字的內容時,用戶很可能會將漢字存儲在數據庫中。假如網站出現編碼問題,一則會導致漢字無法正確讀取,二則更有可能會導致網站的異常崩潰。為了解決這類問題,我們可以使用php中的iconv庫來解決。
//簡單將GBK轉換成UTF-8 $str = "新華網北京1月8日電(記者林小春)剛剛結束的中國女排備戰集訓,讓主帥郎平更加明確定位了隊伍的華麗轉身截。"; $str = iconv("GBK", "UTF-8", $str); echo $str;
上面的代碼是將GBK轉化成UTF-8的一種簡單方式。我們只需要使用iconv("GBK", "UTF-8", $str)函數將原始字符串轉化成UTF-8格式即可。
但是有時候,上面的方法并不能完全解決問題。比如在Laravel5中,我們可能會遇到清空數據表時,使用truncate方法清空數據會超時的問題。
我們可以在執行該操作前,將$\_SERVER['HTTP_ACCEPT_CHARSET']的值改為utf-8。如下圖所示:
public function truncate($table_name) { $charset = $_SERVER['HTTP_ACCEPT_CHARSET']; $_SERVER['HTTP_ACCEPT_CHARSET'] = 'utf-8'; DB::statement("TRUNCATE TABLE $table_name"); $_SERVER['HTTP_ACCEPT_CHARSET'] = $charset; }
在truncate方法中,將字符集信息捕獲下來,設置utf-8字符集然后執行清空操作,操作完成后再將字符集恢復為原來的值。這樣可以有效避免一些奇特的字符編碼問題。
綜上所述,對于解決php中字符編碼轉換問題,除了使用iconv庫外,還需要注意其它與字符編碼有關的問題,例如Laravel5中清空數據表時的操作等。
下一篇php gb轉換