我在 Django (1.4) 模型中有一个文本字段,我正在尝试使用 MySQLdb 将记录保存到 MySQL。
MySQL 使用 UTF-8 字符集。
我正在尝试存储一个 Unicode 字符串:
u"\u2019"
我希望能够在 Django 中使用 Unicode 自动转换为 UTF-8 进行存储。
但是我得到了错误:
*** UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position *: ordinal not in range(128)
现在我注意到,如果我在保存之前手动将字符串编码为 UTF-8,我可以修复错误。
mystring.encode("utf-8")
有什么我想念的吗?
编辑:示例代码
这是模型:
class MyModel(models.Model):
textfield = models.TextField()
> mystring = u'\u2019'
> print mystring
’
> MyModel(mystring).save()
*** UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 1: ordinal not in range(128)
> MyModel(mystring.encode("utf-8")).save() #this instead works