在Django管理员中保存对象时出现此错误,UnicodeEncodeError:'ascii'编解码器无法对位置63中的字符u'\ xe9'进行编码:序号不在范围内(128)
我的数据库是unicode(postgres)保存的对象有一些法语字符。我在使用MySQL时保存对象之前从未遇到过任何问题。
答案 0 :(得分:2)
在没有看到任何代码的情况下,猜测发生了什么是很棘手的,但我怀疑你正在将unicode
传递给某些东西,然后将其转换为str
。
E.g。
>>> str(u'\xe9')
Traceback (most recent call last):
File "<pyshell#39>", line 1, in <module>
str(u'\xe9')
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 0: ordinal not in range(128)
你可能应该对你传入的任何内容进行编码,以便它变成一个合适的字节流。如果它期望str
中的unicode,则utf8可能是一种选择,但请查阅文档以了解您正在使用的任何模块。
yourstring = yourunicode.encode("utf8")
unicode 不是字节编码所以它不能用于接口两个系统...因为需要应用哪一个编码(例如UTF8,UTF16等)了解。因此,在 unicode 中使用postgres和在 unicode 中使用python不允许您传递其内部表示的任何内容 - 在接口处您需要指定每个编码器应该使用。