django admin中的Unicode

时间:2011-05-30 00:09:16

标签: django unicode ascii admin

当我尝试通过管理界面添加不仅具有ascii字符的图片时,我遇到了问题。

似乎总是尝试将图片文件的名称转换为ascii:

UnicodeEncodeError at /admin/app/subpicture/add/
        ('ascii', u'/home/celtrun/rails/alphasteel/public/media/my_media/subpictures/Zdj\u0119cia_iPhone_wrzesie\u0144_320.jpg', 68, 69, 'ordinal not in range(128)')
Request Method: POST
Django Version: 1.3
Exception Type: UnicodeEncodeError
Exception Value:    
('ascii', u'/home/celtrun/rails/alphasteel/public/media/my_media/subpictures/Zdj\u0119cia_iPhone_wrzesie\u0144_320.jpg', 68, 69, 'ordinal not in range(128)')
Exception Location: /bin/python-2.6.1/lib/python2.6/genericpath.py in exists, line 18
Python Executable:  /bin/python-2.6.1/bin/python

Unicode error hint

The string that could not be encoded/decoded was: s/Zdjęcia_i

结果是我尝试保存的图片没有出现在指定的存储库中。如果图片的名称在文件名中没有unicode字符,则图片的文件将保存在此存储库中。 有人有任何想法来解决这个问题吗?

2 个答案:

答案 0 :(得分:4)

2年后,我遇到了与CentOS6.4和Django 1.5相同的问题。

当我搜索解决方案时,我认为即使我上传了一个带有特殊字符的文件,我也可能会遇到其他应用程序的问题。所以我尝试了this。对文件使用ASCII比使用unicode名称更好。不是每个程序都支持ığüşöçâİ或字体。它也可能导致网站出现字体问题。

答案 1 :(得分:0)

Ubuntu / * nix上的默认Apache环境不允许使用非ASCII文件名。这导致 在文件字段/图像域中提交unicode文件名时,非常不直观的 UnicodeEncodeError 在Django admin。

尝试将此添加到Apache配置(/etc/apache2/envvars):

export LANG='en_US.UTF-8'
export LC_ALL='en_US.UTF-8'

然后重启apache服务器。