2011-05-30 104 views
1

我有问题,当我试图添加图片不仅通过管理界面ascii字符。Unicode在Django管理

它似乎总是在尝试转换图片的文件的名称为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

你忘了解释你在做什么。 – 2011-05-30 00:13:25

+0

现在已经很清楚了吗?对不起,如果没有,但我只是试图做到这一点是保存图片文件,并显示它的名称在管理界面。文件名称具有Unicode字符。 – krzyhub 2011-05-30 00:23:26

+0

是的,现在它是有道理的。但我仍然没有解决方案,对不起。 – 2011-05-30 00:24:04

回答

4

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

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

0

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

尝试增加这Apache的配置(/etc/apache2/envvars):

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

然后重新启动Apache服务器。

+0

谢谢,但在我的服务器我有mod_passenger与文件passenger_wsgi.py和没有像“etc/apache2/envvars”目录。 – krzyhub 2011-06-09 18:16:04

+2

我试过这种方法,似乎没有按预期工作。我已重新启动apache,但在使用unicode字符保存文件时仍然出现unicode错误 – espenhogbakk 2011-09-01 14:16:15

+0

可能是Web服务器网关的问​​题。在我的情况下,它是gunicorn。他们不会允许除“ASCII”外的其他任何内容。 – 2017-11-29 09:56:09