当我尝试通过管理界面添加不仅具有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字符,则图片的文件将保存在此存储库中。 有人有任何想法来解决这个问题吗?
答案 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服务器。