Python 3 zu 2: Strings

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Üpsilon
User
Beiträge: 222
Registriert: Samstag 15. September 2012, 19:23

Habe ein paar Python3-Programme, die mit Hilfe des sockets-Moduls Sachen durchs Netzwerk schicken. Dabei wird immer die gleiche Zeichenkodierung benutzt. Liege ich richtig mit der Annahme, dass ich, um die Programme für Python2 anzupassen, einfach alle .encode- und .decode-Aufrufe weglöschen muss?
Dankeschön und liebe Grüße! :D
PS: Die angebotene Summe ist beachtlich.
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

@Üpsilon: wie kommst Du auf die Idee, dass Python2 das Encoding richtig raten kann? Deine Vermutung ist falsch. Was geändert werden muß, damit ein Python3-Programm mit Python2 läuft, läßt sich nicht auf die Schnelle sagen. Mit etwas Glück reichen ein paar __future__-Importe, mit Pech muß man alles neu schreiben. Warum willst Du überhaupt Python2 einsetzen?
Üpsilon
User
Beiträge: 222
Registriert: Samstag 15. September 2012, 19:23

Ich hatte gedacht, dass Python2-Strings ja Python3-bytes entsprechen (so war es doch, oder?). Deswegen müsste man diese Python2-Strings doch einfach so unbehandelt mit den Sockets herumschicken können, oder?

Grund ist, dass ich meine "alten" Programme auf nem Rechner ausführen möchte, der Python2, aber kein Python3 hat. Python3 zu installieren wäre natürlich die Alternative, aber ich wollte erstmal hören, obs auch anders geht.
PS: Die angebotene Summe ist beachtlich.
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

@Üpsilon: würde Dein Programm auf Byte-Ebene arbeiten, gäbe es (auch) bei Python3 kein encode und decode. Was Strings anbelangt, gibt es kaum Unterschiede zwischen Python2 und Python3. Die implizite Umcodierung von ASCII-Zeichen (die sehr praktisch war und keine Probleme machte) wurde abgeschafft, dafür ein paar implizite Kodierungen von einem Systemencoding eingeführt, das Probleme machte und erst allmählich "repariert" wird. Zusammengefasst, Leute die Wissen, was Zeichenkodierung ist, werden zur Verzweiflung gebracht, die, die es nicht wissen, werden nun gezwungen, überall dort, wo es Fehlermeldungen gibt, encode oder decode einzusetzen, bis das Skript scheinbar läuft.

Ohne das Skript zu kennen, kann niemand sagen, was zu tun ist, damit es unter Python2 läuft.
Antworten