Re: [請益] utf8編碼問題

看板PHP作者 (Austin)時間14年前 (2010/04/10 02:58), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《davidou (老歐 ! 月夜雪嵐)》之銘言: : 我SQL預設都是 MySQL 文字編碼: UTF-8 Unicode (utf8) : 校對:utf8_general_ci 這個是MySQL Server儲存時的編碼方式 : 而網頁也是用UTF8存的 : 也寫了<meta http-equiv="Content-Type" content="text/html; charset=utf8"> 這個是給瀏覽器知道您網頁使用的編碼方式 : 但是我只要遇到中文就會產生?? : 而當我在 mysql_select_db("test"); 後面加上 : mysql_query("SET NAMES 'utf8'"); : mysql_query("SET CHARACTER_SET_CLIENT=utf8;"); : mysql_query("SET CHARACTER_SET_RESULTS=utf8;"); : 這三行之後 就可以正確顯示了 但是為什麼我會需要又多加這三行? 其實應該不用三行啦!只要SET NAMES 'utf8'就可以了 A SET NAMES 'x' statement is equivalent to these three statements: SET character_set_client = x; SET character_set_results = x; SET character_set_connection = x; http://dev.mysql.com/doc/refman/5.1/en/charset-connection.html : 我已經所有邊碼都是用UTF8進行了 怎還會再需要定義這三行呢 因為上面提到的三個參數,其中有值不是utf8(很多預設是latin1) 這三個參數可以在MySQL裡面直接設定,不過建議還是把SET NAMES 'x'留著 不然你可能會因為換了環境,就又出現亂碼了,而且你也不一定能改server的設定 三個參數你可以用這個語法查看 show variables where Variable_name in ('character_set_client', 'character_set_results', 'character_set_connection'); : 另外 假設要是我網頁是UTF8 但是資料庫是BIG5的話 : 我是不是也是多這三行給他然後把UTF8改成BIG5就好 是要用SET NAMES 'big5'沒錯,不過你如果只接echo出來的話還是會出現亂碼 所以先把資料從big5轉成utf8才會正常顯示 不過這不是MySQL的問題了,你可以試看看不轉直接印出來 這時會出現亂碼,然後你把瀏覽器的編碼方式改成big5他就會正常了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.240.3.88

04/10 09:43, , 1F
非常感謝你的回答 我有比較了解一點了 晚點會在看書學
04/10 09:43, 1F
文章代碼(AID): #1BltZfMh (PHP)
討論串 (同標題文章)
文章代碼(AID): #1BltZfMh (PHP)