iT邦幫忙

0

PHP + Mysql 中文字已使用UTF8 但還是亂碼

  • 分享至 

  • xImage

https://ithelp.ithome.com.tw/upload/images/20200910/201240889cwBib8ZK3.png

https://ithelp.ithome.com.tw/upload/images/20200910/20124088dUj8Qa7rgF.png

請問 為什麼有有用UTF8 但顯示卻還是亂碼

https://ithelp.ithome.com.tw/upload/images/20200910/20124088bxdllx9SLP.png
https://ithelp.ithome.com.tw/upload/images/20200910/20124088GjGjIQQny7.png
https://ithelp.ithome.com.tw/upload/images/20200910/20124088YYrRp1UVh0.png
用程式寫入資料的話讀出來可以
https://ithelp.ithome.com.tw/upload/images/20200910/20124088mwX7EVrD3H.png

淺水員 iT邦大師 6 級 ‧ 2020-09-10 14:33:46 檢舉
先把 Content-Type 那行的註解拿掉,試試看結果怎麼樣。
或是先用 firefox,右上角的「≡」> 更多 > 文字編碼 > unicode,看看能不能正確顯示。
PS. chrome 我不知道怎麼改顯示的編碼。
p00260 iT邦新手 5 級 ‧ 2020-09-10 14:47:56 檢舉
謝謝!
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
小魚
iT邦大師 1 級 ‧ 2020-09-10 14:05:57
  1. 輸入的資料是什麼?
  2. 資料庫跟資料表跟資料欄用的編碼都一樣嗎?
  3. 輸入的時候也是用UTF-8的編碼嗎?
  4. 資料庫裡面記的是正常的還是亂碼?
p00260 iT邦新手 5 級 ‧ 2020-09-10 14:48:06 檢舉

謝謝!

5

很常見的新手問題,我來簡單說明一下。基本上要處理utf8需要先注意三個地方。

1.html的標頭宣告編碼
2.程式或html檔案的文件編碼(需要用UTF8無 BOM)
3.mysql的編碼。要注意資料表的編碼。

程式方面則是在注意:
1.運行mysql連結是否有做「set name utf8」這方面有看到你有處理。
2.有無做標頭宣告編碼,其實這跟上面的第一點一樣。
3.資料庫的資料是用程式傳入的。

常碰到的問題:
1.使用phpmyadmin輸入資料,但用程式輸出還是不行的。
這可能是你的phpmyadmin並未設定好,產生偽造utf8的情況,但實際還是用iso編碼寫入。
先用程式寫入資料後再查看phpmyadmin是否可以正常顯示中文。

2.導入問題。導入的sql本身就是編碼錯誤的情況。一般這會比較無解。除非你知道來源的實際編碼。
3.檔案編碼問題。在做第一項測試是,用錯誤的檔案編碼寫入錯誤的格式中文。導至問題更多。
4.瀏覽器被固定顯示編碼而非自動。這個要非常注意。有很多新手常被這給害死。

p00260 iT邦新手 5 級 ‧ 2020-09-10 14:48:11 檢舉

謝謝!

0
淺水員
iT邦大師 6 級 ‧ 2020-09-10 14:45:25

由以下這段程式,可以顯示出跟提問者一樣的訊息

<?php
//這個檔案用 utf-8 儲存
header('Content-Type:text/html; charset=big5');
echo '怎麼是亂碼';

故可以知道,伺服器送出的內容是正確的(資料庫那邊沒問題)
僅僅只是瀏覽器用 big5 去詮釋 utf-8 的內容

解決方式就是送正確的 header 給瀏覽器

p00260 iT邦新手 5 級 ‧ 2020-09-10 14:48:16 檢舉

謝謝!

0
WQ
iT邦新手 2 級 ‧ 2020-09-14 16:34:46

我注意到你的編輯器,請確認檔案編碼。
編碼->UTF8 <---這個也會影響(我目前也是用這個,也吃過這個虧)

p00260 iT邦新手 5 級 ‧ 2020-09-17 19:37:14 檢舉

好 謝謝!

我要發表回答

立即登入回答