2015-07-13 1 views
3

Я пытаюсь показать emoji, используя его значение unicode(). Но я получаю экранированную строку как \u00f0\u0178\u02dc\u20ac, которая декодируется в 😀.Юникодный символ отображается как закодированный ascii на стороне клиента

Я использую сервер Mysql и PHP 5.4 в своем проекте. В mysql он хранится как 😀. Есть ли способ, чтобы это и экранирования в вернуться Фактический Юникода с PHP сервера

Я попытался, iconv('ASCII//TRANSLIT', 'UTF-8', '😀');, mb_convert_encoding($var, "US-ASCII", "UTF-8") и utf8_encode(). не работает.

Благодаря

+1

Вам нужно использовать 'utf8mb4' в MySQL. 'utf8' поддерживает только до 3 байтов на символ. – Vatev

+0

[Здесь] (http://apps.timwhitlock.info/unicode/inspect?s=%F0%9F%98%80) вы можете видеть, что это действительно 4 байта. – OIS

+0

@Vatev: Mysql обходит проблему хранения, разбивая ее на 4 отдельных символа. Я пытаюсь его перестроить. Поскольку мой db довольно огромен, я не могу напрямую изменить кодировку db без правильной проверки. –

ответ

0

, не зная структуры базы данных (убедитесь, что вы используете utf8 как набор символов для таблицы!), Я думаю, что проблема может быть просто на стороне дисплея. Попробуйте запустить свой PHP-скрипт, отправив заголовок в браузер, который позволяет ему знать, что вы собираетесь отображать символы UTF8, а не западную кодировку (ISO-8859-1).

header('Content-type text/html; charset=UTF-8'); 
+0

Я пробовал, все еще не работал. –

+0

Все тот же вход/выход? Интересно, есть ли у вас данные bum в базе данных? Вы посмотрели [этот ответ] (http://stackoverflow.com/a/2446818/294171) и попробовали это для получения emoji в (и из) база данных без коррупции? (Я пытался хранить emoji как в «ТЕКСТ», так и в «BLOB» в базе данных MySQL, и оба, казалось, отлично работали _without_.) –

Смежные вопросы