HTML в базе данных

#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 или другого), прежде чем сохранять это.