来自MySQL的Unicode字符(表情符号)显示为" ????"

时间:2015-11-06 02:47:46

标签: php mysql laravel unicode laravel-5

在MySQL表上,列release_notes以utf8mb4编码。

在Laravel config/database.php文件中,以下内容位于MySQL部分:

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

从MySQL客户端,我将该列的值设置为表情符号(例如"")。它在MySQL客户端上正确显示。

要显示该列,请在Blade模板上提供以下内容:

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

然而,最终在浏览器上显示的内容是:

  

????

为了验证这不是浏览器/ HTML问题,我直接在模板文件上对表情符号进行了硬编码,并按预期显示。

我确实试过the accepted answer of this question,但没有用。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

究竟是4个问号?表情符号长4个字节。可能的原因是尝试将非latin1字符转换为CHARACTER SET latin1列。

检查所有这些:

  • 数据库中的列 - 使用SHOW CREATE TABLE验证它们是显式设置为utf8还是默认为表定义。 (仅更改数据库默认是不够的。)
  • 客户端和服务器之间的连接。请参阅SET NAMES utf8
  • 您拥有的字节数。 (情况可能就是这样。)
  • 如果要在网页中显示文字,请检查<meta>标记。