Я обновил свое веб-приложение, чтобы использовать 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) и при выводе обычных текстовых полей (HTML, <input>
или <textarea>
) все выглядит хорошо (я вижу é
, а не é
, не é
, ууу) .
Однако у CKEditor есть некоторые проблемы с кодировкой. См. Прикрепленное изображение для того же поля, взятого из базы данных, отображаемого в текстовой области, а затем в текстовой области, перенесенной CKEditor:
Кажется, это в JavaScript-коде CKEditor (возможно, в фиксированной кодировке), но я не могу найти его в конфигурации. Опять же, поскольку é
отображается правильно в обычном HTML (настоящий UTF-8 é
, а не é
или é
), я совершенно уверен, что это не PHP / MySQL-запрос, который неправильный (но я мог бы быть ошибаюсь).
РЕДАКТИРОВАТЬ: Это похоже на признак применения htmlentities
, который по умолчанию кодируется в Latin-1, в тексте UTF-8. Существует возможность использования htmlspecialchars
или указать кодировку ("utf-8"), но я не знаю , где изменить это в CKEditor .