[請益] phpMyadmin資料亂碼問題(暫時解決)
好吧我知道這已經是萬年問題了,但是儘管我爬了四個小時以上的文,
還是發生了一些無法理解的事情,只好煩請各位板友幫忙解答一下
我用的php版本是5.3.2,phpMyAdmin版本是3.5
目前的問題是:
中文資料從form透過php輸入到mysql時,phpMyAdmin和MySQL終端機介面
的中文資料欄位都會顯示亂碼。而透過php取出資料時,輸出正常。
如果直接透過phpMyAdmin或終端機直接打insert into指令,則中文能在介面上正常顯示
但透過php輸出資料則為亂碼。
已經檢查過
1. html有加下列這一行
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
2. MySQL的連線方式是經過\s檢查為
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
3.MySQL中文欄位都有設定成utf8_general_ci
以上設定過後檢查phpMyAdmin仍然一樣
故在負責insert資料的php加上mysql_query("set names utf8");
發現結果仍然一樣。
另外發現如果在負責select輸出資料的php加上mysql_query("set names utf8");
form所輸入的中文資料在網頁輸出會變亂碼。(資料庫仍為亂碼)
如果透過phpMyAdmin直接key in資料庫的中文在網頁輸出會變正常。
目前小弟懷疑是php編碼的問題,故用mb_internal_encoding()函式查看編碼發現是
ISO-8859-1,也就是Latin1。加上mb_internal_encoding("utf-8")結果仍然一樣。
麻煩各位版友解惑,該如何才能讓form輸入中文,phpMyAdmin、網頁輸出也是中文不亂碼
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.92.101
→
05/09 20:57, , 1F
05/09 20:57, 1F
→
05/09 21:09, , 2F
05/09 21:09, 2F
→
05/09 22:34, , 3F
05/09 22:34, 3F
→
05/09 22:36, , 4F
05/09 22:36, 4F
→
05/10 00:06, , 5F
05/10 00:06, 5F
→
05/10 00:07, , 6F
05/10 00:07, 6F
感謝樓上們所提供的建議,經過一番良久的測試之後
目前問題已經解決,但是原理還是沒有搞清楚
測試後發現,如果使用mysqli_connect(主機,使用者,密碼,資料庫);
那麼set names utf8這句話會自動失效,不管你set names什麼編碼都一樣
但是如果你用mysql_connect,之後再select db,那麼set names utf8就有效且必要,
因為如果不加上這一句,那麼資料庫內、就會亂碼
可是經由show variables like "character_set%"查詢我的MySQL設定
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
+--------------------------+----------------------------+
早就是utf8,
我想請問為什麼它預設不會以utf8方式做連線,而還要自己手動設定set names utf8 ?
※ 編輯: thustow 來自: 140.113.92.108 (05/11 00:05)
※ 編輯: thustow 來自: 140.113.92.108 (05/11 00:06)
PHP 近期熱門文章
PTT數位生活區 即時熱門文章