PHP輸出中文亂碼解決:編碼終結者

學習PHP之初,根本就沒有意識到過有編碼那回事兒,隨着對中文的輸出愈來愈多,遇到輸出亂碼的狀況也就更加廣泛了。最先咱們懷疑是數據庫編碼的問題,因而在PHP代碼中的解決的辦法是:
mysql_query("SET NAMES UTF8");   

但這樣作了後,網頁顯示的仍然是亂碼,因而有修改網頁頭部信息:
header('Content-type:text/html;charset=UTF8');

順便還找到條其餘命令,也不知道能起到什麼做用,反正遇到亂碼的時候就把它加進去,解決問題便可:
declare(encoding='UTF-8');

還有一種狀況,是文件編碼與輸出編碼衝突,例如PHP文件編碼是ANSI(若是你用windows記事本建立的PHP文件,默認就是ANSI),雖然我也不知道ANSI具體是什麼,但咱們但願輸出的是UTF-8,因此,仍是亂碼了,因而,又在瀏覽器顯示編碼中設置網頁顯示編碼爲UTF-8:
html




問題到此,基本可以解決顯示亂碼的現象了!mysql

可是,我以爲不該該就此結束!由於咱們之後還會遇到編碼衝突的狀況,有沒有防患於未然的方案呢?sql

我大膽地思考這個問題,而後百度了一下「PHP轉換字符串編碼」,果真有對應的函數能夠解決這個問題!數據庫


那就是:windows

mb_detect_encoding — 檢測字符的編碼,和mb_convert_encoding — 轉換字符的編碼,這兩個函數。瀏覽器


關於這兩個函數的用法,請各位本身去搜索吧,PHP手冊裏面也很詳盡,我就不在此佔用篇幅了。ide


另外還有個函數:iconv,它的效率比mb_convert_encoding 高,但功能沒mb_convert_encoding 好,瞭解後你本身取捨吧!函數


但,通過本人研究了一兩天,貌似這兩個函數並沒如我所願地把字符串隨意地轉換成GBK,GB2312,UTF-8的編碼,也許是個人「打開方式不對」?總之,方法找到了,只是用法還沒掌握,也就是時間的問題而已啦。學習


因此,在此分享本人的經驗,但願能幫小白清除這方面的疑惑,也歡迎大牛在此補充指教哈!編碼

相關文章
相關標籤/搜索