我在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