#html #database #character-encoding #ascii
#HTML #База данных #кодировка символов #ascii
Вопрос:
На моем веб-сайте есть редактор wysiwyg — зарегистрированные пользователи сохраняют текст в базе данных SQL.
Когда я извлекаю этот текст позже — иногда встречаются искаженные символы. Например, маркерная точка HTML (которая, как я подозреваю, является тегом <ul>
и <li>
) — отображается в виде вопросительного знака в черном ромбе.
Редактор wysiwyg выдает неверный код? Я действительно использовал NicEdit — я знаю, что TinyMCE лучше, но NicEdit действительно легкий. Я переключусь, если потребуется.
Или я должен прогнать текст через какую-то функцию фильтра?
Мои страницы построены на PHP — есть идеи, как я могу исправить эту ошибку?
Комментарии:
1. Похоже, что специальные символы не преобразуются в соответствующие html-объекты перед входом в базу данных.
2. Страница имеет кодировку UTF 8. Поле базы данных SQL, в котором сохраняются данные, имеет тип «text» с параметрами сортировки:utf8_general_ci
3. @Jrod Использую ли я php HTMLEntities () для этого?
4. Итак, проверьте, что вводится в базу данных, и что печатается после того, как вы ее извлекли. Допустим ли xhtml, тогда ваша проблема не в редакторе.
Ответ №1:
Вероятно, сделайте оба:
а) переключитесь на редактор Wysiwyg, который для начала создает допустимый xhtml, и
б) проанализируйте / подтвердите / очистите все, что отправляется конечными пользователями (с помощью html purifier, библиотеки dom php или другого), прежде чем сохранять это.