html - 某些 unicode 图标未保存并正确显示
问题描述
我正在尝试将 unicode 图标添加到我的网站 SEO 标题/元数据中,由于某种原因,它不会接受某些图标。我的网站是 UTF-8。我将它保存在我的数据库中作为utf8_general_ci
.
当我添加图标时,它将返回为 ???? https://emojipedia.org/heavy-dollar-sign/
当我添加图标✔️时,它会在标题中添加✔️。 https://emojipedia.org/check-mark/
这是有原因的还是正常的?
解决方案
“✔️”是一个 3 字节的 Emoji;"" 占用 4 个字节。所以问题是CHARACTER SET utf8
需要更改为CHARACTER SET utf8mb4
.
解决方案是
utf8mb4
在连接参数中提供` 。此操作因客户端(Java/PHP/...)而异。- 连接后立即添加
SET NAMES utf8mb4
到代码中。
如果这些还不够具体,请搜索您拥有的位置utf8
,它可能是utf8mb4
。(注意:我不是说UTF-8
,这是非 MySQL 的等价物utf8mb4
。)
更多讨论: UTF-8 字符问题;我看到的不是我存储的
从技术上讲,复选标记需要 6 个字节——两个 3 字节字符:十六进制 E29C94 EFB88F。所以它与utf8
. 但是美元符号需要4个字节:F09F92B2,所以不能用utf8表示,只能用utf8mb4表示。失败通过 4 个问号表示。
推荐阅读
- c# - 在 Razor 页面中使用 API 更新自定义字段,C#
- python - 使用 tkinter 获取多行(域名)
- arrays - 是否可以将字典中的特定键用于具有自定义 tableViewCell 的非静态 tableView
- html - 尝试复制 IE 11 的“按需匹配”或“Ram”布局,但项目在不应该被拉伸时被拉伸
- javascript - Firebase,检测用户如何连接(谷歌、Facebook、电子邮件......)
- r-markdown - 在 RStudio 的 R Markdown 中,四个反引号块之后的代码块失去交互性(例如,“运行当前块”按钮消失)
- javascript - 为什么我的复选框长度不正确?在 laravel 中
- ksqldb - ksqlDB 表中的数据是持久的?
- scala - 在 Spark 的 Edge 和 Vertices 中存储多列数据
- php - 可以执行 MYSQL SELECT 查询以跳过某些特定值