在我的Django应用和MariaDB数据库中,当用户发布包含之类的表情符号的表单时,笑脸被另存为
????
,这显然不是故意的。
视图中的功能:
# -*- coding: utf-8 -*-
def send_letter(request):
args = {}
if request.method == 'POST':
form = SendLetterForm(request.POST)
if form.is_valid():
d = form.save(commit = False)
try:
author = get_user(request)
except:
author = 'Guest'
d.title = form.cleaned_data['title']
d.body = form.cleaned_data['body']
d.published = False
d.save()
用于生成表格的模型是:
class SendLetter(models.Model):
author = models.ForeignKey(User, blank=True, null=True)
title = models.CharField(max_length=100, blank=False)
body = models.TextField(blank=False)
created = models.DateTimeField(default=datetime.datetime.now)
published = models.BooleanField(default= False, blank=True)
表格:
class SendLetterForm(forms.ModelForm):
class Meta():
model = SendLetter
exclude = ('author','created', 'published')
表排序规则设置为utf8mb4_bin
,文本使用波斯语。我也尝试了其他utf8归类,例如utf8_persian_cli
,但没有成功。保存没有表情符号的波斯文字没有问题。
当我使用PhpMyAdmin将包含表情符号的文本直接插入表格字段时,表情符号将正确存储。
我也尝试了d.body = form ['body'](没有cleaned_data
),但是保存后得到了相同的????
。
所以问题是如何在不损害表单安全性的情况下正确保存表情符号?
答案 0 :(得分:2)