Django Tastypie - 在数据库中存储的表情符号服务
我正在使用 django 和 tastypie 来搭建我的 API,数据库是 MySQL。
经过几天的摸索,我终于成功地在数据库中存储了表情符号,使用的是 utf8mb4 字符集。
当我直接在控制台(在 Mac 上)查询数据库时,可以正常看到表情符号,但是当我通过 API 拉取数据(比如在浏览器中)时,json 数据里却显示的是问号。这让我觉得问题不在数据库,而是在 django/tastypie 和数据库的连接上。
我该怎么做呢?
2 个回答
0
如果你把JSON数据保存到一个文本文件里,然后用UTF8编码的文本编辑器打开,它的表情符号会重新出现吗?
我猜测,当在浏览器中显示JSON时,浏览器可能使用了Latin-1编码,这样就会出现问号。你的浏览器里可能有个设置可以调整编码方式。
检查一下你服务器发送的“Content-Type”头信息。里面是否写着 application/json; encoding=utf-8
?
1
解决方案在Django的设置里:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'OPTIONS': {'charset': 'utf8mb4'},
(...)