[PYTHON] Maßnahmen, die bei verstümmelten Zeichen zu ergreifen sind, wenn versucht wird, das Ergebnis von aws-cli umzuleiten / weiterzuleiten

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.

Gegenmaßnahmen

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

Maßnahmen, die bei verstümmelten Zeichen zu ergreifen sind, wenn versucht wird, das Ergebnis von aws-cli umzuleiten / weiterzuleiten
Maßnahmen, die zu ergreifen sind, wenn in HttpResponse Redirect ein verdächtiger Vorgang auftritt
Aufzeichnung der Aktionen, die ausgeführt werden müssen, wenn google_image_download nicht verwendet werden kann
Die Geschichte des Versuchs, den Client wieder zu verbinden
Ein Hinweis auf Missverständnisse beim Versuch, das gesamte selbst erstellte Modul mit Python3 zu laden
Ich möchte über die Verbindungsumgebung benachrichtigt werden, wenn RaspberryPi eine Verbindung zum Netzwerk herstellt
Ich möchte das Ausführungsergebnis von strace erfassen
Seien Sie vorsichtig, wenn Sie die Eigenvektoren einer Matrix unterscheiden