CKEditor charset

时间:2011-07-11 16:27:24

标签: php mysql html encoding ckeditor

我更新了我的网络应用程序,使用的是UTF-8而不是ANSI。

我做了以下措施来定义字符集:

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

我还编辑了CKEditor配置来删除htmlentities,因为我需要正确的字符(即é而不是&eacute;)来进行MySQL全文搜索。

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

在数据库(phpMyAdmin视图)和普通文本字段输出(HTML,<input><textarea>)中,一切看起来都很好(我看到é,而不是&eacute; ,而不是é,yay)。

但是,CKEditor在编码方面有些麻烦。请参阅附图,了解从数据库中获取的相同字段,显示在textarea中,然后在CKEditor重新定位的textarea中: CKEditor Encoding Problems

这似乎是在CKEditor JavaScript代码中(可能是一个固定的字符集),但我在配置中找不到它。同样,由于é在普通HTML(真正的UTF-8 é,而不是&eacute;é)中正确显示,我很确定它不是PHP / MySQL查询错了(但我可能会弄错)。

编辑:这似乎是应用htmlentities的症状,默认情况下,在UTF-8文本中使用Latin-1编码。有可能使用htmlspecialchars或指定字符集(“utf-8”),但我不知道在CKEditor中修改它的位置

3 个答案:

答案 0 :(得分:8)

这个帖子似乎有点陈旧,但回答它是为了帮助任何寻找回复的人。

允许CKEditor将字符é处理为é而不是&eacute;将entities_latin的配置设置为false,如下所示:

config.entities_latin = false;

或者,您可能只想将以下选项设置为false:

config.entities = false;
config.basicEntities = false;

答案 1 :(得分:0)

这是我的方法错了,而不是CKEditor的。查看了错误的文件并错过了htmlspecialchars上的UTF-8编码。

答案 2 :(得分:-1)

您还可以在数据库连接中使用:$connection->query("SET NAMES 'utf8'"); 并记得将db和/或表Collat​​ion设置为utf8 ...我更喜欢utf8_general_ci