Wenn Sie einen Befehl von aws cli wie folgt übertragen, sieht er folgendermaßen aus (Befehl und Ausgabe sind Dummy).
$ aws s3 ls --recursive bucket/photo/1/
2014-05-06 16:45:30 11979 photo/1/20140506164529_Screenshot 2014-01-28 15.27.48.png
Wenn Sie es jedoch beispielsweise in den folgenden Befehl ändern, wird es ärgerlich.
$ aws s3 ls --recursive bucket/photo/1/ | tee /dev/null
2014-05-06 16:45:30 11979 photo/1/20140506164529_????????? 2014-01-28 15.27.48.pn
Haunted!
Das gleiche Phänomen tritt auf, wenn die Datei durch Umleitung ausgegeben wird.
Die Ursache liegt im Python-Verarbeitungssystem, das den Befehl aws
implementiert. Python stimmt mit dem Zeichencode entsprechend dem Ausgabeziel überein, aber im Fall von Umleitung oder Pipe wird die Ausgabe in ASCII erzwungen, da der Zeichencode des Ausgabeziels nicht bekannt ist! !! !! Zusätzliche Nachahmung! !! !! </ del>
Als Gegenmaßnahme sollten Sie eine Umgebungsvariable / Shell-Variable namens "PYTHONIOENCODING" definieren.
$ PYTHONIOENCODING=UTF-8 aws s3 ls --recursive bucket/photo/1/ | tee /dev/null
2014-05-06 16:45:30 11979 photo/1/20140506164529_Screenshot 2014-01-28 15.27.48.png
Recommended Posts