為什麼這篇php中文問號鄉民發文收入到精華區:因為在php中文問號這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者jscorpio1 (我 天蠍)看板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
> -------------------------------------------------------------------------- <
作者: 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