Re: [請益] utf8編碼問題
※ 引述《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
討論串 (同標題文章)