Re: [心得] 網頁亂碼問題解決法
※ 引述《towalking (不需要腳踏車的魚)》之銘言:
: ※ 引述《ottokang (貓貓的大玩偶)》之銘言:
: : 剛剛上來整理版面發現亂碼問題越來越多
: : 很多PHP的初學者常常遇到亂碼的問題而感到困擾,這邊我就整理一下解決辦法
: : 如果用了之後還有遇到再上來版上問
: : 首先,亂碼的問題幾乎都來自於古老的Big5編碼,因此要有個觀念
: : 若非必要
: : 不要用Big5編碼!不要用Big5編碼!不要用Big5編碼!
: : 請愛用UTF-8編碼!請愛用UTF-8編碼!請愛用UTF-8編碼!
: : 使用編碼就像一堆人說話一樣,如果一個人講了火星話,自然其他地球人聽不懂
: : 所以請你先確定以下的環節有沒有做好:
: : ◎ 資料庫編碼設定UTF-8了嗎?
: : ◎ PHP程式檔案用UTF-8編碼了嗎?有沒有不小心用到BOM?
: ^^^這是什麼?
: : ◎ HTML有用UTF-8嗎?有沒有在head的地方設定以下的Meta Tag?
: : <meta http-equiv=content-type content="text/html; charset=utf-8" />
: : 以上都做到的話,應該可以解決99%的編碼問題,剩下的再到版上發問吧!
: 感謝版主整理,
: 看過版友給的方法,
: 我在執行 sql 指令前,加上 mysql_query("SET NAMES 'utf8'");
: 的確解決了中文資料寫進資料庫,在資料庫介面顯示亂碼的問題。
: 我一開始請教朋友怎麼解決這個問題,
: 他只告訴我 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
: 他寫的程式碼並沒有加上 mysql_query("SET NAMES 'utf8'"); 也不會顯示亂碼,
: 請問為什麼會有這樣的差別呢?(我的不加就會亂碼,他不加也不會有亂碼 @@)
: 另外發現一個問題,
: 中文寫進資料庫不會有亂碼了,
: 但是從資料庫讀出就會出現亂碼,為什麼有這種情況發生啊?
: 資料庫是以 utf8_general_ci 編碼,
: php 程式頁一開頭有加上
: <meta http-equiv="Content-Type" content="text/html; charset=utf-8">,
: 謝謝版友回答了!
首先,你朋友沒有使用 SET NAMES 就沒有亂碼,那應該是他剛好安裝好的版本就是for
utf-8 的,所以不需要做任何的設定
至於你讀出db時產生亂碼,建議你SET NAMES 的動作,是加在 mysql_connect 之後
這樣不管你是讀出 or 寫入就不用再進行SET NAMES 的動作
另外,要檢查你的mysql所使用的預設編碼及自定編碼,最簡單的方式是用phpMyAdmin
去看環境變數
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.248.90.201
討論串 (同標題文章)