Re: [心得] 網頁亂碼問題解決法

看板PHP作者 (RackyRose)時間16年前 (2007/10/02 00:18), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/4 (看更多)
※ 引述《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
文章代碼(AID): #170HtXLV (PHP)
文章代碼(AID): #170HtXLV (PHP)