2015-11-06 68 views
0

在MySQL表上,列release_notes以utf8mb4编码。来自MySQL的Unicode字符(emojis)显示为“????”

在Laravel config/database.php文件,下面是根据MySQL的部分:

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

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

要显示列,在刀片模板我有以下几点:

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

然而,什么结束了在浏览器上显示的是:

????

要验证这不是浏览器/ HTML问题,我直接在模板文件上对表情符号进行硬编码,并按预期方式显示。我试过the accepted answer of this question,无济于事。

我错过了什么?

+0

是否可以像在模板的''部分添加''一样简单......?好像你跑会排除这一可能性的硬编码测试中,虽然 – morphatic

+0

对了,我已经有''标签。 –

+0

字体怎么样?该页面是否可以尝试在没有符号的字体中显示该字符?再次,不太可能,但要淘汰明显的,简单的东西首先 – morphatic

回答

0

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

检查所有这些:

  • 在数据库中的列(S) - 使用SHOW CREATE TABLE以验证它们明确设置为UTF-8,或从表定义默认。 (这是不足以更改数据库默认。)
  • 客户端和服务器之间的连接。见SET NAMES utf8
  • 你有的字节。 (这可能是这种情况。)
  • 如果您要在网页中显示文本,请检查<meta>标记。