Python中MySQL数据库改为utf8mb4后,手机emoji表情在PC端显示异常怎么办?
刚给 mysql 数据库改成了 utf8mb4,手机发的 emoji 表情图。在手机上显示正常,在 pc 端就成了😪🤕🤒💩💤👿😪
这是怎么回事?
Python中MySQL数据库改为utf8mb4后,手机emoji表情在PC端显示异常怎么办?
好像 Win10 以下版本不支持显示 emoji
macOS 表示显示没问题
https://i.loli.net/2017/09/04/59ad6aab6ab6d.png
这个问题是因为PC端数据库客户端或应用本身的字符集设置没跟上。
核心就两步:
-
确保连接层用utf8mb4
在Python里,连接MySQL时必须显式指定字符集:import pymysql conn = pymysql.connect( host='localhost', user='user', password='pass', database='db', charset='utf8mb4', # 关键在这里 cursorclass=pymysql.cursors.DictCursor )如果用了SQLAlchemy,连接字符串加
?charset=utf8mb4。 -
检查终端/IDE的显示支持
如果数据在数据库里正确(用HEX()查emoji的存储是F0 9F 98 80这类4字节就对了),但PC程序显示为乱码,那很可能是PC端的显示环境不支持渲染emoji字体。
比如Windows终端旧版本、某些IDE的默认字体,需要换用支持emoji的字体(如Segoe UI Emoji、Noto Color Emoji)。
总结:连数据库时charset设对,PC端换能显示emoji的字体。
原来是这样。谢谢了。。。
我还是 xp…
兼容 PC 的话,应该把编码替换成 img 吧
附:
http://www.unicode.org/~scherer/emoji4unicode/snapshot/full.html
不兼容
就是目前 xp 上就是无法显示暂时的?
怎么换?自已写代码转还是有什么别的方法
看客户端操作系统支持。
#10 win10 自带
这个数据库无关,和编码也没什么关系。既然手机上已经显示出来,说明是你没有 emoji 字体,或是浏览器没有回降到 emoji 字体。
PS: Firefox 仅支持 SVG in Opentype 类型 emoji,移动平台常见 png 彩色 emoji 不适用。
这是字体问题吧。
Mac 下显示没什么问题。
困,绷带,体温计,粑粑,困,恶魔,困
linux 表示 表情 方框*5 表情
emoji 转成 png 就能兼容了
这个怎么转?
mac 上显示正常
你这么一说好像的确有点。我是想强调现在问题不在编码了。就是个字体没有匹配的问题。


