2010-06-28 35 views
7

我正在使用CakePHP構建的法語網站。我嘗試了多種功能嘗試將文本轉換爲UTF-8並正確顯示,但目前爲止沒有成功 - 任何重音字母都顯示爲帶有問號的黑色菱形。當我將瀏覽器中的字符集更改爲ISO-8859-1時,它們會正確顯示,但我希望使網站符合UTF-8。我已經使用了:以UTF-8顯示法語重音字符的問題

html_entity_decode($ string,ENT_QUOTES,'UTF-8'); htmlspecialchars($ string,ENT_QUOTES,'UTF-8'); utf8_encode

但沒有雪茄。該頁面設置爲UTF-8在頭

和MySQL數據庫使用UTF-8。我怎樣才能讓重音字符在UTF-8中正確顯示?

+0

對不起,不知道如何接受答案,現在已經做到了 – igniteflow 2010-06-28 10:25:44

+1

一般來說,你沒有什麼可轉換的。只存儲沒有任何編碼的用戶文本,並且僅使用htmlspecialchars顯示它。 – 2010-06-28 11:36:53

回答

8

檢查您的@@character_set_results。默認情況下,MySQL使用latin1,而不是utf8。嘗試SET NAMES utf8mysqli::set_charset

更新:這裏是你會如何選擇字符集使用:

mysql> SHOW VARIABLES LIKE '%char%'; 
+--------------------------+----------------------------+ 
| 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/ | 
+--------------------------+----------------------------+ 

瞭解更多關於dev.mysql.com

5

第一張:檢查您的PHP文件編碼!我在Mac上工作,我使用Coda進行編程,並且它有一個轉換字符集的選項,有時我會遇到類似這樣的問題,並轉換爲UTF-8總是修復它們。我認爲Notepad ++可以在Windows上做到這一點。如果您使用的HTML輸出,檢查你是否在你的頭有<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> ..:(如果你這樣做你的PHP文件,對他們的每一個字符串將不需要的功能htmlspecialchars()html_entity_decode等)

二。

第三:做@janmoesen在你的MySQL數據庫上說的。

告訴我一些關於這件事。

+1

你是達人。我從來沒有想過它可能是由實際的文件編碼造成的。 – 2012-03-27 20:19:09

+0

hehehe學習和教學! :) – CuSS 2012-04-05 18:50:11

1

我剛剛修復了一個非重複字符不顯示的問題。我的數據庫表是utf-8編碼的,我的html頭文件正確設置爲utf-8。

我沒有爲我的MySQL連接指定一個字符集,在我的情況下我正在使用PDO。

$this->pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8;", $username, $password); 

現在沒問題!