Django和UnicodeDecodeError

时间:2012-05-04 16:28:43

标签: django utf-8 decode

我做了什么......

___我有一个上传表单,我上传带有图片的.zip文件。每当有一个非ascii字符äüõ的文件标题时,我得到一个unicode解码错误。

 title = ' '.join([filename[:filename.rfind('.')], str(count)])

错误:

此行生成图片的标题,这正是导致我出错的行:'utf8' codec can't decode byte 0x82 in position 2: invalid start byte. You passed in 'cr\x82ations' (<type 'str'>)

我尝试做的事情:

我也尝试.decode('utf-8')。但无论我尝试什么,每次都得到相同的结果。

我读到有关在site.py中将默认djangos ascii更改为utf-8,但我不确定它会有所帮助,并且非常确定我不想这样做。

感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

Django有一些有用的实用方法,你可以使用它们。

请参阅:https://docs.djangoproject.com/en/dev/ref/unicode/#conversion-functions

我想代码看起来像这样:

from django.utils.encoding import smart_str

title = ' '.join([smart_str(filename[:filename.rfind('.')]), str(count)])

答案 1 :(得分:0)

我也相信首先使用.decode()是正确的选项,但是,您使用的代码页('utf-8'))可能不正确。你能试试'1252'还是其他一些?以下是您可能感兴趣的一些标准编码[链接] http://docs.python.org/library/codecs.html?highlight=arabic

答案 2 :(得分:0)

失败的原因是因为您尝试使用普通的str对象加入:

而不是

' '.join(..)

使用:

u' '.join(..)

使用以下方式让您的生活更轻松:

from __future__ import unicode_literals