[請益] phpMyadmin資料亂碼問題(暫時解決)

看板PHP作者 (~碗粿~)時間13年前 (2012/05/09 20:02), 編輯推噓0(006)
留言6則, 4人參與, 最新討論串1/1
好吧我知道這已經是萬年問題了,但是儘管我爬了四個小時以上的文, 還是發生了一些無法理解的事情,只好煩請各位板友幫忙解答一下 我用的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
form 所在的檔案格式有存成 utf-8 嗎?
05/09 20:57, 1F

05/09 21:09, , 2F
有,無bom的
05/09 21:09, 2F

05/09 22:34, , 3F
有確認過myadmin的網頁編碼?直接從mysql做dump看看
05/09 22:34, 3F

05/09 22:36, , 4F
從資料庫直接倒出來的資料回頭追兩邊的網站編碼
05/09 22:36, 4F

05/10 00:06, , 5F
不負責言論是看一下那個PHP"檔案"的編碼
05/10 00:06, 5F

05/10 00:07, , 6F
現在才看到1.2樓的推文,上句當我沒說過
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)
文章代碼(AID): #1FgbpEe2 (PHP)
文章代碼(AID): #1FgbpEe2 (PHP)