精華區beta PHP 關於我們 聯絡資訊
問題:從資料庫讀出的中文字變成問號,但是在phpmyadmin裡顯示正常 問題畫面 http://ppt.cc/rYWP 相關設定: 1. mysql設定為utf8_unicode_ci 2. php檔存為utf8 3. mysql_query("set names 'utf8'") 4. header ('Content-type:text/html; charset=utf-8') 5. browser的預設編碼也是utf8 也google到了 http://www.mrmu.com.tw/2011/01/09/php-mysql-utf8-unicode/ 都照做了,但還是無法解決 但是直接key在php檔裡的中文字都能正常顯示,若將browser改為big5則會變成亂碼 請問還有什麼方法可以try的嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.165.5.25
xxxzzz:1~5都是utf8..最後瀏覽器故意再改成用big5讀? 01/26 15:48
jscorpio1:大大誤會了,那是我試著改看看的啦!! 01/26 15:52
knuckles:看一下這個有沒有設 http://puu.sh/1SPt0 01/26 18:21
jscorpio1:解決了,原來是mysql_query跟mysqli_query的差別 01/28 20:20
jscorpio1:mysqli要改用mysqli_set_charset($link,'utf8')才行 01/28 20:27
jscorpio1:請看http://php.net/manual/en/mysqli.set-charset.php 01/28 20:28
> -------------------------------------------------------------------------- < 作者: maplenote (貓奴一隻) 看板: PHP 標題: Re: [請益] 中文字變"問號"了 時間: Sat Jan 26 18:00:17 2013 會影響編碼的有好幾個環節,原本想說私底下回原po就好 不過或許po出來我才知道我的想法是不是錯的 (有錯的話 請指教><) 我把會整個過程視為加密與解密 寫入時:(就像加密) 1.填寫網頁的原始檔編碼 2.瀏覽器開啟填寫頁面的編碼 3.連資料庫的編碼 4.資料庫內記錄的編碼 讀取時:(其實跟上面一樣,就像解密) 4.資料庫的編碼 3.連資料庫的編碼 2.瀏覽器開啟頁面的編碼 1.顯示資料頁面的原始檔編碼 如果寫入跟讀出的每個步驟 1對1、2對2、3對3、4對4都相同,顯示就會相同 但是1~4的編碼 不一定要一樣 1~4的編碼不同只會影響到某些字在其中一個編碼不存在時, 存進資料庫時那幾個字會變亂碼 所以! 只用phpmyadmin寫入及讀出,顯示就會是正常的 只用自己寫的php頁面寫入及讀出,應該顯示還是正常的(除非連線設定檔案分開寫) 若之後調整了中間的編碼 舊資料只有重新撈出做轉碼後寫入 或者 重新輸入 才有可能正常顯示 而原po的資料我不曉得是從哪個頁面輸入的 總之phpmyadmin顯示正常 自己的php頁面亂碼代表兩邊設定有不同 ※ 引述《jscorpio1 (我 天蠍)》之銘言: : 問題:從資料庫讀出的中文字變成問號,但是在phpmyadmin裡顯示正常 : 問題畫面 http://ppt.cc/rYWP : 相關設定: : 1. mysql設定為utf8_unicode_ci : 2. php檔存為utf8 : 3. mysql_query("set names 'utf8'") 這一項 phpmyadmin 也要一致 我對phpmyadmin不熟...大概是檢查 config.inc.php 內有沒有設定 搜看看有沒有 iso-8859-1 或 big5的設定 把它都改為 utf8_unicode_ci 我的設定檔裡有 // Default connection collation (used for MySQL >= 4.1) $cfg['DefaultConnectionCollation'] = 'utf8_unicode_ci'; 若是沒有應該能自己新增進去吧... : 4. header ('Content-type:text/html; charset=utf-8') : 5. browser的預設編碼也是utf8 phpmyadmin也要一致 若檢查瀏覽器頁面不是utf8 有些版本的phpmyadmin在登入的時候 選擇語系有分big5或utf8,應該是這個影響的 但是像我的中文語系就沒有分@@ : 也google到了 http://www.mrmu.com.tw/2011/01/09/php-mysql-utf8-unicode/ : 都照做了,但還是無法解決 : 但是直接key在php檔裡的中文字都能正常顯示,若將browser改為big5則會變成亂碼 : 請問還有什麼方法可以try的嗎? 若是真的phpmyadmin的問題 你修改完後 phpmyadmin 內的資料顯示也會是亂碼 (就跟你的php頁面顯示一樣) 別太緊張^^" 這才是正確的! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.61.241.210