[英]Problems displaying French accented characters in UTF-8
我正在使用CakePHP構建的法語網站。 我已嘗試多種功能嘗試將文本轉換為UTF-8並正確顯示,但到目前為止沒有成功 - 任何帶重音的字母都顯示為帶有問號的黑色菱形。 當我將瀏覽器中的字符集更改為ISO-8859-1時,它們會正確顯示,但我想使while網站符合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中正確顯示重音字符?
檢查你的@@character_set_results
。 默認情況下,MySQL使用latin1
,而不是utf8
。 嘗試SET NAMES utf8
或mysqli :: 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上的更多內容。
第一:檢查你的php文件編碼! 我在Mac上工作,我使用Coda編程,它有一個轉換字符集的選項,有時我會遇到這樣的麻煩,轉換為UTF-8總是修復它們。 我認為Notepad ++可以在Windows上實現。 (如果在PHP文件上執行此操作,則它們上的每個字符串都不需要函數htmlspecialchars()
, html_entity_decode
等)
第二:如果你正在使用HTML輸出,請檢查你的標題上是否有<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
第三:做@janmoesen在你的MySQL數據庫上說的話。
告訴我一些事情。
我剛剛修復了一個非常類似的問題,重音字符沒有顯示。 我的數據庫表是utf-8編碼的,我的html標題是為utf-8正確設置的。
我沒有為我的MySQL連接指定一個字符集,在我的情況下我正在使用PDO。
$this->pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8;", $username, $password);
現在沒問題!
如果這有助於任何人使用PHP類。
我的解決方案是將Character Encoding設置為我的Connection。
//connect to MySQL and select DB
public function open_connection() {
$this->connection = new mysqli( DB_SERVER, DB_USER, DB_PASS, DB_NAME );
if ( !$this->connection ) {
die( "Database connection failed: " . mysqli_error() );
}
mysqli_set_charset($this->connection,"utf8");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.