0

我所做的...

___我有一个上传表单,我可以从其中上传带有图片的 .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 的信息,但不确定它是否会有所帮助,并且很确定我不想这样做。

任何帮助表示赞赏。

4

3 回答 3

0

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

代替

' '.join(..)

利用:

u' '.join(..)

或者使用以下方法让您的生活更轻松:

from __future__ import unicode_literals
于 2012-09-01T10:52:14.490 回答
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)])
于 2012-05-05T07:18:04.500 回答
0

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

于 2012-05-14T08:46:02.673 回答