Ich habe ein Problem mit der Codierung mit Zeichenfolgen, die ich von einer externen Quelle bekomme. Diese Quelle sendet die codierten Zeichenfolgen an mich und ich kann sie nur decodieren, wenn sie Teil des Skriptcodes sind. Ich habe mir hier mehrere Threads angeschaut und sogar einige empfohlene Tutorials (zB this eins) aber leer ausgegangen.Python-Codierung Problem im Skript, wenn Zeichenfolge nicht fest codiert
Zum Beispiel, wenn ich dies auszuführen:
python -c 'print "gro\303\237e"'
ich:
große
Welches ist das richtige Ergebnis.
Aber wenn ich es in einem Skript verwenden, wie zum Beispiel:
import sys
print sys.argv[1]
und nennen Sie es wie test.py "gro\303\237e"
, erhalte ich:
gro\303\237e
Ich beabsichtige, die richtige Zeichenfolge zu schreiben an syslog, aber Ich kann das nicht zur Arbeit bringen.
Einige Daten auf meinem System: - Python 2.7.10 - CentOS Linux - LANG = en_US.UTF-8 - LC_CTYPE = UTF-8
ich Hilfe zu schätzen wissen, lassen Sie mich bitte wissen wenn Sie mehr Informationen benötigen. Danke!
Rufen Sie einfach Ihr Skript mit 'test.py" große "'. – syntonym
Ich würde, aber ich kontrolliere nicht die Eingabezeichenfolge. Es kommt bereits verschlüsselt an. Vielen Dank. – n3g4s
'\ xxx' in einem * String-Literal * wird als Escape-Sequenz interpretiert, aber ** nur ** in einem String-Literal. - Mehr als das ist jedoch "303 \ 237" als Escape-Sequenz für "ß" eher ... ungewöhnlich. Es scheint, als wäre die Kodierung dieser Zeichenfolge falsch gelaufen. Sie können das richtige Ergebnis erhalten, wenn Sie es (in) auf die gleiche Weise korrekt dekodieren, aber welche Art von Flucht ist das, und können Sie es an der Quelle korrigieren? – deceze