ak01 schrieb:
Also um das richtig zu verstehen, Ich habe meine Variable v, type(v) gibt mir str aus, die Variable ist also kodiert.
Richtig, man spricht auch von Byte-Strings. Im Gegensatz dazu gibt es noch Unicode-Strings, die eben uncodierte Zeichenketten darstellen; diese sind aber nur intern verwendbar und stellen für Dich letztlichz eine Blackbox dar. Sobald was in Dein Programm rein kommt oder raus geht, wird codiert. Daher immer versuchen das explizit zu machen und möglichst direkt beim Eingang in Unicode wandeln und beim Ausgang wieder explizit kodieren.
Nun enkodiere ich diese mittels v.encode('iso-8859-1')
Falsch! Man dekodiert diese per "".decode(encoding)
, ich hatte auch utf-8 probiert, da bekomm ich aber eine Fehlermeldung, folglich müsste die Variable also mit iso-8859-1 kodiert gewesen sein und ist nun nach Unicode dekodiert
Ja, wenn Du dekodierst hast, dann ok. (Nur der Vollständigkeit: Es gibt zig Encodings. Nur weils utf-8 nicht ist, muss es in de Praxis kein iso-8859-1 sein 😉 )
Mein Programm kodiert nun den Unicode direkt bei Ausgabe in utf-8, wieso muss ich nicht extra vorher nochmal mit encode('utf-8') das erledigen?
Lies mal hier: http://www.python.org/dev/peps/pep-0263/ und dort der Abschnitt "Defining the Encoding". Prinzipiell geht das, weil Du in Deinem Script ja utf-8 als Standard angegeben hast. Nimm das mal weg, dann krachts, weil Python dann ASCII annimmt und Umlaute nicht kodieren kann (das implizite encoding() beim print wird eben fehlschlagen)