[爆卦]php中文問號是什麼?優點缺點精華區懶人包

為什麼這篇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
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

你可能也想看看

搜尋相關網站