2015-11-06 2 views
0

В таблице MySQL столбец release_notes закодирован в utf8mb4.Юникод-символы (emojis) из MySQL отображаются как «????»

О файле Laravel config/database.php, ниже в разделе MySQL:

'charset' => 'utf8mb4', 
'collation' => 'utf8mb4_unicode_ci', 

От клиента MySQL, я установить значение этого столбца смайлик (например, «»). Он корректно отображается на клиенте MySQL.

Для отображения этого столбца, на шаблоне лезвию я следующее:

{!! nl2br($app->release_notes) !!} 

Однако то, что в конечном итоге отображение на браузере:

????

Чтобы проверить это не проблема с браузером/HTML, я жестко запрограммировал emoji непосредственно в файле шаблона и отображается так, как ожидалось.

Я попробовал the accepted answer of this question, безрезультатно.

Что мне не хватает?

+0

Может быть, это так просто, как добавление '' в раздел '' вашего шаблона ...? похоже, что жесткий тест кодирования, который вы запускали, должен был бы исключить это, хотя – morphatic

+0

Правильно, и у меня уже есть тег '. –

+0

как насчет шрифта? может ли страница пытаться отобразить символ в шрифте, который не имеет символа? опять же, маловероятно, но хочется выбить очевидные, простые вещи сначала – morphatic

ответ

0

Точно 4 вопросительные знаки? Emoji имеет длину 4 байта. Вероятная причина заключается в том, чтобы преобразовать символы не-latin1 в столбец CHARACTER SET latin1.

Проверить все эти:

  • Колонны (ы) в базе данных - Использование SHOW CREATE TABLE чтобы убедиться, что они явно установлены в utf8, или по умолчанию из определения таблицы. (Недостаточно изменить базу данных по умолчанию.)
  • Связь между клиентом и сервером. См. SET NAMES utf8.
  • Байт, который у вас есть. (Возможно, это так.)
  • Если вы показываете текст на веб-странице, отметьте тег <meta>.
Смежные вопросы