Как добиться правильного поведения с помощью HTML Purifier?

StackOverflow https://stackoverflow.com/questions/379339

Вопрос

Я использую Очиститель HTML в моем PHP-проекте и у меня возникли проблемы с тем, чтобы заставить его правильно работать с пользовательским вводом.

Я заставляю пользователей вводить текст в HTML с помощью редактора WYSIWYG (Крошечный кусочек), но всякий раз, когда пользователь вводит в HTML-объект   (неразрывный пробел) он сохраняется в базе данных как этот странный иностранный символ (Â).

Однако дело в том, что когда я редактирую сохраненную запись с помощью редактора WYSIWYG, она отображается должным образом в виде  .Он также работает должным образом при отображении, только в исходном коде он отображается как реальный пробел, но не как неразрывный символ пробела.

Кроме того, в базе данных MySQL он отображается как странный иностранный символ.

Я читал документ о Очиститель Unicode и HTML и изменил кодировку моей базы данных и веб-страницы на UTF-8, но у меня все еще возникают проблемы с тем, что неразрывный пробел не искажается.Другие HTML-объекты, такие как &lt; и &gt;, быть сохраненным как < и >, но почему бы и нет &nbsp;?

Это было полезно?

Решение

Неразрывный пробел не сохраняется в вашей базе данных в виде одного странного иностранного символа, он сохраняется как два Персонажи.Неразрывный пробел в Юникоде кодируется в UTF-8 как 0xC2 0xA0, который в ISO-8859-1 выглядит как "Â " (т.е.странный иностранный символ, за которым следует неразрывный пробел).

Вы, вероятно, забываете сделать SET NAMES 'utf8' при подключении к вашей базе данных, что заставляет PHP отправлять свои данные в MySQL как ISO-8859-1 (по умолчанию).

Взгляните на "UTF-8 на всем протяжении…" чтобы узнать, как правильно настроить UTF-8 при использовании PHP и MySQL.

Другие советы

Это также может помочь вам узнать, что &#160; является альтернативой для &nbsp; который вам, скорее всего, потребуется, если вы когда-нибудь выведете какой-либо удобочитаемый XML ;)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top