You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHPMyAdmin部分Emoji无法显示求助(已设置utf8mb4_unicode_ci)

解决🅰️ Emoji显示问号的问题

先排查CSV导入的编码问题

既然手动SQL插入Emoji正常,说明数据库本身的utf8mb4配置没问题,大概率是CSV文件编码不对,或者导入工具没选对编码:

  • 打开你的CSV文件,用Notepad++或VS Code转成UTF-8无BOM格式:
    • Notepad++:顶部菜单栏选「编码」→「转为UTF-8无BOM」
    • VS Code:点击右下角的编码标识→「通过编码保存」→选择「UTF-8」
  • 重新导入时,确认导入工具(比如phpMyAdmin、Navicat)的编码选项选utf8mb4或UTF-8

批量修复已存在的问号数据

如果已经有数据显示问号,直接用SQL批量替换:

1. 先验证要修复的记录

假设你的表名是your_table,存Emoji的字段是emoji_column,先查询出有问号的行:

SELECT * FROM your_table WHERE emoji_column LIKE '%?%';

2. 执行替换操作

把问号替换成正确的🅰️ Emoji,执行前记得先备份表:

UPDATE your_table 
SET emoji_column = REPLACE(emoji_column, '?', '🅰️')
WHERE emoji_column LIKE '%?%';

保险起见,可以先跑下面的语句看替换效果,没问题再执行UPDATE:

SELECT emoji_column, REPLACE(emoji_column, '?', '🅰️') AS corrected FROM your_table WHERE emoji_column LIKE '%?%';

特殊情况:如果问号是编码乱码导致的

要是问号不是普通的?字符,而是编码错误生成的乱码,用十六进制匹配替换:
🅰️的utf8mb4十六进制是F09F85B0EFBC8F,问号的UTF-8十六进制是EFBFBD,执行:

UPDATE your_table 
SET emoji_column = REPLACE(emoji_column, UNHEX('EFBFBD'), UNHEX('F09F85B0EFBC8F'))
WHERE emoji_column LIKE CONCAT('%', UNHEX('EFBFBD'), '%');

后续预防

  • 所有导入的数据源(CSV等)必须是UTF-8无BOM格式
  • 应用程序连接数据库时,务必设置连接编码为utf8mb4(比如PHP里用mysqli_set_charset($conn, 'utf8mb4'),Java连接串加useUnicode=true&characterEncoding=utf8mb4)

内容的提问来源于stack exchange,提问作者IrishChristof

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 09:17:40