我更新了我的网络应用程序以使用 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,因为我需要正确的字符(即 é
而不是 é
)来进行 MySQL 全文搜索。
config.entities = false;
config.entities_latin = false;
在数据库(phpMyAdmin View )和普通文本字段输出(HTML、<input>
或 <textarea>
)中,一切看起来都很好(我看到了 é
,而不是 é
,不是 é
,耶) .
但是,CKEditor 在编码方面存在一些问题。请参阅从数据库中获取的相同字段的附加图像,显示在文本区域中,然后显示在由 CKEditor 替换的文本区域中:
这似乎在 CKEditor JavaScript 代码中(可能是固定字符集),但我在配置中找不到它。同样,由于 é
在普通 HTML 中正确显示(真正的 UTF-8 é
,而不是 é
或 é
),我很确定这不是 PHP/MySQL 查询的错误(但我可能弄错了)。
编辑:这似乎是应用 htmlentities
的症状,默认情况下在 UTF-8 文本上以 Latin-1 编码。有可能使用 htmlspecialchars
或指定字符集(“utf-8”),但我不知道在 CKEditor 中的何处修改。
最佳答案
这个话题似乎有点过时了,但回答它是为了帮助任何寻求回复的人。
允许 CKEditor
将字符 é
处理为 é
而不是 é
;将 entities_latin
的配置设置为 false
,如下所示:
config.entities_latin = false;
或者,您可能只想将以下选项设置为 false:
config.entities = false;
config.basicEntities = false;
关于php - CKEditor 字符集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6653307/