seahawk1986 schrieb:
Encoding von Strings ist in Python etwas, das man verstehen muss
Ich wage das zu ergänzen: Encoding ist etwas, was jeder Entwickler grundsätzlich verstehen muss! 😉
seahawk1986 schrieb:
...bei Python2 ist die Herausforderung einen richtig encodierten String in der Shell ausgeben zu lassen
Also eigentlich ist das in Python3 deutlich schwieriger, da die print
-Funktion nur mit Strings (in Python3 also Unicode) arbeitet und keine Bytes (also *encodierte* Strings) ausgeben kann. Intern wird das Default-Encoding des Systems verwendet, was zu Komplikationen führen kann, wenn Shell und OS unterschiedliche Codierungen verwenden. Darüber hinaus unterscheiden diese sich aber primär auch von OS zu OS, was umso schwerer wiegt, weil ich *keine* Aussage darüber mehr treffen kann, ob mein Script auch auf einem anderen System funktioniert.
Das String-Handling an sich ist in Python3 prinzipiell deutlich besser, da es keine zwei gleichartigen und implizit mischbaren Typen mehr gibt, die encodierte und Unicode-Daten schwerer greifbar machen. In Python3 sind Strings immer Unicode und Operationen darauf klappen ergo immer automatisch. Einzig das teilweise schlecht gelöste de- oder encodieren (s. print
) trüben die Freude darüber ☹
@ANDREAS 1967 Du solltest Dirch wirklich mal mit dem Konzept von Codierungen von Strings auseinander setzen. Ansonsten wirst Du auf kurz oder lang immer in Schwierigkeiten geraten. Hier mal einige gute Links zu dem Thema:
Wichtigste Regel vorab: UTF-8 != Unicode! 😉 In der Windows-Welt und von vielen uninformierten Menschen hört man dazu immer halbgares Gerede; da wird gerne von 'Unicode' geredet, wenn eigentlich ein Encoding gemeint ist, welches Unicode ohne Verlust darstellen kann, oder auch sehr schlimm von 'ANSI', welches per se überhaupt keine spezielle Codierung darstellt, sondern eigentlich ein Alias für das 'cp1252'-Encoding darstellt. Grauenhaft!
Die Erkenntnis, wie das alles zusammenhängt und was Unicode, was ein Encoding ist und was man wo einsetzen sollte, wird Dein Entwicklerleben nachhaltig *positiv* verändern! ☺
Last but not least:
reicht vollkommen aus (bei Python 2)