2011-07-11 31 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