2013-04-08 154 views
1

當我回顯阿拉伯字符時,它們看起來很好,但如果我從數據庫回顯它們,它們會顯示爲問號。下面是我做的這麼遠,但它仍然是不工作:utf8不能與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      | 
| character_sets_dir  | /usr/share/mysql/charsets/ | 

排序規則設置現在是:

| Variable_name  | Value   | 
| collation_connection | utf8_general_ci | 
| collation_database | utf8_general_ci | 
| collation_server  | utf8_general_ci | 

在PHP代碼中,我使用:

header('Content-Type: text/html; charset=utf-8'); 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
mysql_query("set character_set_server='utf-8'"); 
mysql_query("set_names 'utf8'"); 

更多信息:

+0

[UTF-8通過所有方式]可能的重複(http://stackoverflow.com/questions/279170/utf-8-all-the-way-through) – 2013-04-08 16:50:21

+0

我不知道你有什麼完成但你不運行'set names utf8';你運行'set_names'utf8''(注意下劃線)。 – 2013-04-08 20:39:55

+0

請注意,MySQL不會與其他人說同一種語言。當MySQL說「utf8」時,它確實意味着「一些奇怪的UTF-8變體,限於三個字節,因爲上帝知道什麼荒謬的原因」。如果你真的想要UTF-8,你應該告訴MySQL你想要這個奇怪的東西,MySQL喜歡叫[utf8mb4](http://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html )。 – 2013-04-09 09:19:27

回答

0

我贊同他們從數據庫中,他們會顯示爲問號

你怎麼echo'ing呢?什麼是你迴應的東西的編碼?如果您對HTML進行迴應,請確保HTML頁面以UTF8解釋。

+0

感謝您的回覆! 是的,我只是在HTML標籤內迴應它們。像回聲'

'。 $ row ['title']。 '

/; 不應該將此行編碼爲utf8: header('Content-Type:text/html; charset = utf-8'); 如果不是,我如何確保HTML被解釋爲UTF-8? 也在同一頁我直接回顯阿拉伯字符,他們顯得很好。 – 2013-04-08 16:57:12

+0

您也可以添加'',但我認爲瀏覽器應該尊重「Content-Type charset」標題。您可以檢查瀏覽器應用了哪種編碼。對於Chrome,它是'Options> Tools> Encoding' – Halcyon 2013-04-08 18:42:22

+0

@MohamedGamalAbdalkader'header/meta charset'不會對任何東西進行編碼,它會*宣佈*您使用的是什麼編碼。所以如果你宣佈UTF-8,並看到問號,你的數據不會被編碼爲UTF-8。 – Esailija 2013-04-09 10:00:00