iT邦幫忙

0

PHP讀出MYSQL的資料變亂碼

之前顯示正常,
突然有天就變亂碼了,
上網查了資料,
做了以下動作,
仍然無效。

header('Content-Type: text/html; charset=utf8');
require_once('mysql.php');
mysql_select_db($database_mysql, $mysql);
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER_SET_CLIENT='utf8'");
mysql_query("SET CHARACTER_SET_RESULTS='utf8'");

顯示畫面:
https://imgur.com/a/GtP9M8z

資料庫裏的資料畫面:
https://imgur.com/a/rQQJjcB

我找到原因了,
資料庫編碼為latin1
設定mysql_query("SET NAMES latin1");
就能正常顯示了

參考網址:
http://calos-tw.blogspot.com/2009/03/mysql-latin1-utf8.html

看更多先前的討論...收起先前的討論...
柯柯 iT邦新手 5 級 ‧ 2018-10-30 15:59:04 檢舉
檢查資料表的字元集吧~ 看資料庫內有沒有變亂碼
jenho iT邦新手 5 級 ‧ 2018-10-30 16:42:38 檢舉
資料庫內看起來都是正常的喔
ccutmis iT邦研究生 5 級 ‧ 2018-10-30 17:11:53 檢舉
用文字編輯器(ex: Notepad++)開啟php檔檢查文件編碼格式是否爲 UTF-8碼?
(曾遇過用某FTP軟體把php檔拉到本地端,它會自動把原本格式是UTF-8碼轉成ANSI碼,沒轉換回UTF-8碼就會在網頁瀏覽時顯示亂碼)

p.s 轉換文件編碼前記得先備份php檔。
jenho iT邦新手 5 級 ‧ 2018-10-30 21:59:47 檢舉
用記事本開啟php檔後,編碼格式爲 UTF-8
jenho iT邦新手 5 級 ‧ 2018-10-31 00:21:21 檢舉
我找到原因了,
資料庫編碼為latin1
設定mysql_query("SET NAMES latin1");
就能正常顯示了
0
rogeryao
iT邦研究生 5 級 ‧ 2018-10-30 15:43:22

charset=utf-8

jenho iT邦新手 5 級 ‧ 2018-10-30 16:48:45 檢舉

charset=utf-8,一樣是亂碼

rogeryao iT邦研究生 5 級 ‧ 2018-10-30 21:14:26 檢舉
jenho iT邦新手 5 級 ‧ 2018-10-31 00:21:33 檢舉

我找到原因了,
資料庫編碼為latin1
設定mysql_query("SET NAMES latin1");
就能正常顯示了

0

是資料原本進資料庫時,編碼不是utf8的關係,
可以測試一下新增一筆utf8的資料確認就知道了

jenho iT邦新手 5 級 ‧ 2018-10-30 21:56:30 檢舉

您好,我試輸了一筆UTF8的資料進去,那一筆顯示就正常了,請問那我現在該如何做呢?把資料庫裏的資料,全轉成UTF8格式嗎?另我網頁上無論用什編碼顯示,都是亂碼哩,但之前有正常顯示說,後來才突然變亂碼

jenho iT邦新手 5 級 ‧ 2018-10-31 00:21:43 檢舉

我找到原因了,
資料庫編碼為latin1
設定mysql_query("SET NAMES latin1");
就能正常顯示了

建議還是將資料統一轉成utf8,之後才可以免除相容性上的問題

0
asys0512
iT邦研究生 5 級 ‧ 2018-11-08 12:41:57

建議資料庫編碼就用 utf8
然後不要用 mysql 至少用 mysqli 或 pdo

我要發表回答

立即登入回答