Ich bin ein wenig verwirrt darüber, wie sich die Standardbibliothek verhalten wird, jetzt da Python (ab 3.0) Unicode-basiert ist. Werden Module wie CGI und urllib Unicode-Strings verwenden oder werden sie den neuen Typ "Bytes" verwenden und nur codierte Daten bereitstellen?Behandelt alles in der Standardbibliothek Strings als Unicode in Python 3.0?
Antwort
Logisch viele Dinge wie MIME-codierte Mail-Nachrichten, URLs, XML-Dokumente und so weiter sollten als bytes
keine Zeichenfolgen zurückgegeben werden. Dies könnte eine gewisse Bestürzung verursachen, da die Bibliotheken für Python werden genagelt starten 3 und Menschen entdecken, dass sie besser über die bytes
/string
Umwandlungen sein müssen, als sie für str
/unicode
... waren
Einer der großen Dinge über diese Frage (und Python im Allgemeinen) ist, dass Sie einfach im Dolmetscher rumspielen können! Python 3.0 rc1 is currently available for download.
>>> import urllib.request
>>> fh = urllib.request.urlopen('http://www.python.org/')
>>> print(type(fh.read(100)))
<class 'bytes'>
Ich stimme zu - Ich habe heute Morgen rc1 kompiliert und installiert, ich habe schon zu viel Zeit damit verbracht, damit herumzuspielen! Ich habe mich nur gefragt, ob es eine Standardregel für Unicode gibt und was nicht. – hacama
Hier wird ein zweistufiger Tanz stattfinden. Siehe Python 3000 and You.
Schritt 1 ist unter 3,0 zu laufen.
Schritt 2 ist, Ihre APIs zu überdenken, um vielleicht etwas Sinnvolleres zu tun.
Der wahrscheinlichste Weg ist, dass die Bibliotheken zu Unicode-Strings wechseln, um so kompatibel wie möglich zu bleiben.
Dann werden vielleicht einige zu Bytes wechseln, um die RFC-Standards für die verschiedenen Protokolle richtiger zu implementieren.
- 1. Speicherplatz in Unicode-Strings
- 2. Wie behandelt man Unicode-Werte in JSON-Strings?
- 3. Python liest eine Datei in Unicode-Strings
- 4. Python 3.0, wie man print() Ausgabe Unicode?
- 5. JavaScript-ähnliches Objekt in der Python-Standardbibliothek?
- 6. Wandzeit in Python mit der Standardbibliothek abrufen?
- 7. Unicode() in Python 3
- 8. Verwendung von C-Strings in der C++ - Standardbibliothek
- 9. Ansatz hinter alles als Objekt in Python
- 10. Doppeldecodierung Unicode in Python
- 11. Wie behandelt man Unicode-Zeichenfolgen in C/C++?
- 12. Zeige Escaped String als Unicode in Python
- 13. PEP 257 Docstring in der Standardbibliothek?
- 14. Wie testen, ob "\ u" in Unicode-Python-Strings enthalten ist?
- 15. Python-Dateinamen in Unicode konvertieren
- 16. Python: Überschreiben von Verfahren in Standardbibliothek
- 17. Wie vergleicht man Unicode-Strings in Javascript?
- 18. Sortierung Strings mit akzentuierten Zeichen in Python
- 19. Fehlerhafte Unicode-Strings beheben
- 20. For-Schleifen in Python 3.0
- 21. Wie behandelt man Unicode einer unbekannten Kodierung in Django?
- 22. Unicode in Python
- 23. Unicode-Bezeichner in Python?
- 24. Dokumentation der SBCL-Standardbibliothek?
- 25. Bereich random.random Python() aus der Standardbibliothek
- 26. Schlechter Code aus der Python-Standardbibliothek
- 27. Wie wird Unicode intern in Python dargestellt?
- 28. Wie Tupel von Unicode-Strings in der Originalsprache (nicht u'foo‘Form)
- 29. Wie behandelt man die str-Variable als Unicode nach der Initialisierung für das OS-Modul in Python 2?
- 30. Sind Unicode-Strings in Python 3 immer noch von "engen"/"breiten" Builds abhängig?
Vielleicht sollte diese Frage nicht von anderen Programmierern beantwortet werden, sondern von den Python-Entwicklern (indirekt, vorzugsweise; durchsuchen Sie die Diskussionen des Entwicklers hier: http://mail.python.org/pipermail/python-3000/) – tzot