2011-07-11 29 views
0

我更新了我的web應用程序以使用UTF-8而不是ANSI。CKEditor字符集

我做了以下措施來定義字符集:

mysql_set_charset("utf8"); // PHP 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> // HTML 
utf8_general_ci // In MySQL 

我還編輯了CKEditor的配置,因爲我需要爲MySQL全文檢索正確的字符(即é而不是&eacute;)去除ヶ輛。

config.entities = false; 
config.entities_latin = false; 

在數據庫(phpMyAdmin的視圖)和普通的文本字段輸出(HTML,<input><textarea>),一切都看起來不錯(我看é,不&eacute;,不é,耶)。

但是,CKEditor在編碼時遇到了一些麻煩。見所附圖片從數據庫中採取了同樣的領域,一個文本顯示,然後在通過的CKEditor條代替一個textarea: CKEditor Encoding Problems

這似乎是在CKEditor的JavaScript代碼(可能是一個固定的字符集),但我可以在配置中找不到它。再次,因爲é正常顯示在正常的HTML(真正的UTF-8 é,而不是&eacute;é),我很確定這不是錯誤的PHP/MySQL查詢(但我可能會誤)。

編輯:這似乎是應用htmlentities的一個症狀,默認情況下,它使用UTF-8文本編碼爲Latin-1。有可能使用htmlspecialchars或指定字符集(「UTF-8」),但我不知道在哪裏修改CKEditor

回答

0

這是我的做法是錯的,而不是CKEditor的。正在查找錯誤的文件,並在htmlspecialchars上錯過了UTF-8編碼。

7

此線程似乎有點過時,但回答它可以幫助任何尋找響應的人。

要允許CKEditor處理字符éé而不是&eacute;爲entities_latin的配置設置爲false,如下:

config.entities_latin = false; 

或者,你可能只是想設置下列選項爲false:

config.entities = false; 
config.basicEntities = false; 
+2

只是'config.entities = false;'爲我工作得很好。 – Liko

-1

你也可以在你的數據庫連接使用:$connection->query("SET NAMES 'utf8'"); 和記得設置分貝,和/或表整理爲utf8 ...我更喜歡utf8_general_ci