Probleme beim Ausführen von Python-Code zum Lesen einer Datei. Beim Ausführen von Apache mit mod_wsgi funktionierte es normal im Terminal, aber beim Ausführen mit Apache stieß ich auf "UnicodeDecodeError". Infolgedessen war das Festlegen des Gebietsschemas ein Problem. Ich bin ein bisschen süchtig danach, also werde ich es als Memorandum belassen. (Da es unter Ubuntus Apache ausgeführt wird, unterscheidet sich die Verzeichnisstruktur usw. geringfügig, wenn es sich um ein RHEL-System handelt.)
[Thu Jul 06 10:50:28.381851 2017] [wsgi:error] [pid 6935] [hogehoge] for line in fin:
[Thu Jul 06 10:50:28.381858 2017] [wsgi:error] [pid 6935] [hogehoge] File "/usr/path/to/python/encodings/ascii.py", line 26, i
n decode
[Thu Jul 06 10:50:28.381862 2017] [wsgi:error] [pid 6935] [hogehoge] return codecs.ascii_decode(input, self.errors)[0]
[Thu Jul 06 10:50:28.381882 2017] [wsgi:error] [pid 6935] [hogehoge] UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 0: ordinal not i
n range(128)
Auf diese Weise tritt wie bei "for line in fin", was häufig in Python geschieht, ein Fehler auf, wenn nur versucht wird, eine Datei zu lesen, in der Japanisch geschrieben ist. Da der Fehler "UnicodeDecodeError" ist, können Sie sehen, dass es sich um Moos um den Zeichencode handelt.
Es lag an den Apache-Einstellungen.
Das System ist "LANG =" en_US.UTF-8 "", das beim Debuggen im Terminal angewendet wird.
Bei der Ausführung unter Apache werden die in / etc / apache2 / envvars
beschriebenen Umgebungsvariableneinstellungen angewendet.
In diesem Fall war es hier "export LANG = C".
Wenn Sie dies mit dem oben Gesagten ausrichten und export LANG =" en_US.UTF-8 "
setzen, funktioniert es (der Kommentar besagt, dass export LANG
zu read / etc / default / locale
geht. Hat nicht gut funktioniert.)
Was ich überprüft habe
--Überprüfen Sie, ob es utf-8 mit import sys; sys.getdefaultencoding ()
ist
Recommended Posts