Я пытаюсь отобразить Emojis, хранящиеся в моей базе данных mysql в веб-браузере, и у меня возникают проблемы. Изначально эмодзи переводились на
????
так же было проведено некоторое исследование и мы изменили кодировку нужной таблицы на utf8mb4. Теперь я могу хранить Unicodes в базе данных, например.
😴
💛
Однако, когда я получаю строку через php, в которой они хранятся, из базы данных я вижу только текст вокруг кодов и сами коды, а не смайлики.
например
"had a great weekend with the family 💛"
вместо:
«отлично провели выходные с семьей »
какие-либо предложения, что я делаю не так?
РЕДАКТИРОВАТЬ
Решил мою проблему. Я использовал
htmlspecialcahrs()
на входе строк, которые я хочу сохранить. Это было преобразование
&
в
&
в результате чего Emoji не должен быть признан
&#128564
не является действительным. Я просто должен был удалить
htmlspecialchars
вставьте строки, и это сработало!
Спасибо за поиск
MySQL не касается HTML-объектов, таких как 💛
, Что-то еще порождает их.
Если вы используете JSON в PHP, проверьте второй аргумент, чтобы избежать htmlentities.
Если вы застряли с сущностями, вы можете превратить их обратно в персонажей с помощью html_entity_decode()
,
Было бы лучше иметь utf8mb4 повсюду; то есть UNHEX('F09F929B')
в базе данных, не использовать html*()
в PHP и т. д.
Других решений пока нет …