2016-11-30 2 views
0

Ich habe eine Anwendung Django in der Produktion, die folgenden Fehler wirft:Django - UnicodeEncodeError in Produktionsumgebung mit Apache

'ascii' codec can't encode character u'\xe9' in position 97: ordinal not in range(128) 
Unicode error hint 
The string that could not be encoded/decoded was: P [email protected] 

P Gen @ rica Teil des Namens einer hochgeladenen Datei.

Der Code, wo der Fehler ist dies erscheint:

files_list = [uuid_temp_files + '/' + f for f in os.listdir(uuid_temp_files) if os.path.isfile(os.path.join(uuid_temp_files, f))] 

in meiner Entwicklung Maschine alles in Ordnung, ich akzentuieren Dateinamen den Namen der Dateien hinzufügen kann.

Gibt es Hinweise auf die Ursachen für diesen Fehler in der Produktionsumgebung? Könnte eine Apache-Konfiguration sein?

freundlichen Grüßen

+0

Ich nehme an, du bist Dev-Maschine verwendet Python 3? – Sayse

+0

Es verwendet Python2.7 –

+1

Warum verwenden Sie nicht 'os.path.join' auf der linken Seite Ihres Listenverständnisses auch? –

Antwort

1

Problem korrigiert mit:

# CentOS use /etc/sysconfig/httpd to config environment variables. 
# 
# By default, the httpd process is started in the C locale; to 
# change the locale in which the server runs, the LANG 
# variable can be set. 
# 
# LANG=C 
LANG=en_US.UTF-8 # you can change to your locale. 

in der Datei "/ etc/sysconfig/httpd" change "LANG = C" bis "LANG = en_US.UTF-8" dann starte Apache neu.

Fertig.