我做了什么......
___我有一个上传表单,我上传带有图片的.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,但我不确定它会有所帮助,并且非常确定我不想这样做。
感谢您的帮助。
答案 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