JQuery отправляет HTML-сущность / эмодзи на сервер PHP

0

Я использую JQuery для сериализации и отправки значений формы на сервер PHP/MySQL, а текстовая область формы содержит текст и emojis как объекты HTML:

<textarea>Hello &#x1f600; and goodbye</textarea>

Сервер получает:

Привет \ud83d\ude00 и до свидания

Однако только "Hello" корректно сохраняется в базе данных. Emoji/entity и любой текст после его исчезновения. База данных:

Привет

Все это UTF-8.

Какой правильный способ разобрать это во что-то, что можно сохранить, а затем вернуть обратно в HTML таким образом, чтобы он отображался правильно? Я должен пропустить что-то простое.

  • 0
    Попробуйте кодировать как utf8mb4
  • 0
    @AndyFoster Вы имеете в виду на уровне базы данных?
Показать ещё 5 комментариев
Теги:
character-encoding
html-entities

1 ответ

0
Лучший ответ

Решаемые.

Или измените сопоставление базы данных/таблицы, как и Энди Фостер в комментариях под вопросом, или JSON-кодирование/декодирование, чтобы гарантировать, что он будет правильно сохранен в виде строки.

json_encode($str);
json_decode($str);

В моем случае было три вещи, влияющие на кодирование/рендеринг:

1) Первоначальная передача с использованием JQuery serialize(), которая преобразует emoji в escape-последовательность Unicode.

2) Сохранение escape-последовательности Unicode в базу данных. Я использовал кодировку JSON, чтобы пройти мимо этого.

3) Выходное экранирование при рендеринге строки JOON-декодированной строки обратно в шаблон HTML.

  • 0
    Почему вы удалили весь код из своего ответа?
  • 0
    @GrumpyCrouton Потратив немного больше времени на это, я понимаю, что код, который я разместил, специфичен для определенной цели, но не обязательно полезен для каждого сценария. Я обновил ответ с немного большей информацией.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню