CKEditor charset

Laz*_*zlo 0 html php mysql 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
Run Code Online (Sandbox Code Playgroud)

我还编辑了CKEditor配置以删除htmlentities,因为我需要正确的字符(即é没有&eacute;)进行MySQL全文搜索.

config.entities = false;
config.entities_latin = false;
Run Code Online (Sandbox Code Playgroud)

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

但是,CKEditor在编码方面存在一些问题.请参阅附图,了解从数据库中获取的相同字段,显示在textarea中,然后在CKEditor重新定位的textarea中: CKEditor编码问题

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

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

小智 8

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

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

config.entities_latin = false;
Run Code Online (Sandbox Code Playgroud)

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

config.entities = false;
config.basicEntities = false;
Run Code Online (Sandbox Code Playgroud)

  • 只是`config.entities = false;`对我来说很好. (2认同)