Modelのverbose_name(その3)


UnicodeEncodeError: 'latin-1' codec can't encode characters in position 8-9: ord
inal not in range(256)

どうやら、このエラーを実際にraiseしている箇所は、MySQLdb\connections.py 148〜149行目のunicode_literalらしい。


def unicode_literal(u, dummy=None, self=proxy(self)):
return self.literal(u.encode(self.charset))

ここでself.charsetの値が'latin-1'になっているため、コードポイントが256以上の文字でUnicodeEncodeErrorが発生するようだ。

この値は同じファイルの136行目で設定されている。


self.charset = self.character_set_name().split('_')[0]

self.character_set_name()の値を表示させて見ると、'latin_swedish_ci' となっている。

いろいろと調べてみたが、今のところself.character_set_name()を変更する方法がよく分からない。次のように固定にしてお茶を濁すことにする。とりあえず、Adminの画面ではうまく行っているように見える。


self.charset = 'utf8'