在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,但没有用。
我错过了什么?
答案 0 :(得分:0)
究竟是4个问号?表情符号长4个字节。可能的原因是尝试将非latin1字符转换为CHARACTER SET latin1
列。
检查所有这些:
SHOW CREATE TABLE
验证它们是显式设置为utf8还是默认为表定义。 (仅更改数据库默认是不够的。)SET NAMES utf8
。<meta>
标记。