2008-09-18 1 views
10

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?

+0

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

Antwort

11

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

6

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'> 
+0

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

1

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.

Verwandte Themen