Использование PHP для базы данных, совместимой с UTF-8. Вот как поступает ввод.
- пользовательский ввод в текстовую область
- текстовое поле, закодированное с помощью javascript escape()
- передается через HTTP-сообщение
- расшифровано с помощью PHP rawurldecode()
- пропущено через HTMLPurifier с настройками по умолчанию
- экранирован для MySQL и сохранен в базе данных
И это происходит обычным образом, и я запускаю unescape() при загрузке страницы. Это позволяет людям, скажем, копировать и вставлять прямо из документа Word и отображать умные кавычки.
Но HTMLPurifier, похоже, стирает специальные символы, отличные от UTF-8, те, которые escape() превращаются в простое выражение %, например Ö, которое переходит в %D6, тогда как смарт-кавычки замещаются в %u2024 или что-то в этом роде и попадают в базу данных таким образом. Он удаляет как специальный символ, так и следующий за ним.
Мне нужно что-то изменить в этом процессе. Возможно, мне нужно изменить несколько вещей.
Что я могу сделать, чтобы не затирать специальные символы?