php - MySQL 中的 Unicode 字符(表情符号)显示为 "????"

标签 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 ,无济于事。

我错过了什么?

最佳答案

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

检查所有这些:

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

关于php - MySQL 中的 Unicode 字符(表情符号)显示为 "????",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33558637/

相关文章:

javascript - 未捕获的语法错误 : Unexpected token < on line 1

php - 如何在 codeigniter 中连接数据库多个服务器?

mySQL - 表锁定与行锁定

mysql - 条件 SQL SELECT - 当返回集为空时,执行另一个 SELECT?

mysql - Symfony2 重复条目 - 但为什么呢?

php - 使用模型工厂的 MySQL 锁定等待超时

php - Laravel 的 array_sort 助手 DESC e ASC

php - 将普通的 SELECT 查询转换为准备好的 SELECT 查询

php - 在 Laravel 中使用 SQL 查询数组获取 html 图像源

php - 需要在 hostgator 上的 ssh 上运行 'composer update',但是 php -v 到低