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