我正在为我的 api 使用django和sweetpie。数据库是MySQL。
经过几天的摆弄,我设法使用 utf8mb4 字符集将表情符号图标存储在数据库中。
当直接从控制台(在 Mac 上)查询 db 时,我看到表情符号很好,但是当从 api 中提取它们时(例如使用浏览器),json 显示问号。这让我相信问题不在于数据库,而在于 django/tastypie 数据库连接。
我该怎么做?
解决方案在 DJango 设置中:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'OPTIONS': {'charset': 'utf8mb4'},
(...)
如果您将 JSON 转储保存到文本文件并使用 UTF8 文本编辑器打开它会怎样?表情符号会重新出现吗?
我怀疑,当在浏览器中显示 JSON 时,浏览器会退回到 Latin-1 编码,从而以问号结束。您的浏览器中可能有一个设置来设置编码。
检查来自您的服务器的“Content-Type”标头。它说application/json; encoding=utf-8
吗?