我复制并粘贴了microsoft :)中的一个表情符号,该表情符后来变成并插入到一个mysql表中,其中表和字段具有字符集、utf8mb4排序规则、utf8mb4_unicode_ci和字段类型longblob。表情符号以表情符号的形式插入到表中。但是当我试图在我的html页面中显示它时,它变成了一个奇怪的字符😊。我试过使用htmlentities,htmlspecialchars,htmlspecialchars_decode,但是没有一个能正确显示表情符号。
发布于 2022-08-12 18:09:35
事实证明,htmlspecialchars_decode没有工作,因为我也使用了loadHTML,所以我只需要将代码修改为:
$str = htmlspecialchars_decode($row['body']);
$doc = new DOMDocument();
// @$doc->loadHTML($str); // emoticons not shown properly
@$doc->loadHTML('<?xml encoding="utf-8" ?>' . $str); // emoticons is shown properly
... // some other processes
return $doc->saveHTML();发布于 2022-08-13 01:49:17
数据应该插入到TEXT列中,使用CHARACTER SET utf8mb4,而不是BLOB。
连接参数应该包括utf8mb4和/或UTF-8,而不是utf8。(这是各种用产品读取的数据。
不要在PHP中使用任何编码器/解码器;这只会增加混乱。
https://stackoverflow.com/questions/73337254
复制相似问题