12

Python (3.0 以降) が Unicode ベースになった今、標準ライブラリがどのように動作するかについて少し混乱しています。CGI や urllib などのモジュールは Unicode 文字列を使用しますか、それとも新しい「bytes」タイプを使用してエンコードされたデータのみを提供しますか?

4

3 に答える 3

12

論理的には、MIME でエンコードされたメール メッセージ、URL、XML ドキュメントなどの多くのものは、bytes文字列ではなく返される必要があります。これは、ライブラリが Python 3 用に限定され始め、人々が / の場合よりも / の変換をより意識する必要があることを発見するにつれて、いくらかの驚きを引き起こす可能性がbytesありstringます。strunicode

于 2008-09-18T09:52:48.190 に答える
7

この質問 (および一般的な Python) の優れた点の 1 つは、インタープリターをいじることができることです。Python 3.0 rc1 は現在ダウンロード可能です。

>>> import urllib.request
>>> fh = urllib.request.urlopen('http://www.python.org/')
>>> print(type(fh.read(100)))
<class 'bytes'>
于 2008-09-18T09:58:19.473 に答える
1

ここで二段舞があります。Python 3000 とあなたを参照してください。

ステップ 1 は、3.0 で実行することです。

ステップ 2 は、API を再考して、おそらくもっと賢明なことを行うことです。

最も可能性の高いコースは、ライブラリがユニコード文字列に切り替わり、以前の動作と可能な限り互換性を維持することです。

その後、さまざまなプロトコルの RFC 標準をより適切に実装するためにバイトに切り替える人もいるでしょう。

于 2008-09-18T10:35:07.187 に答える