標準ライブラリ内のすべてのものは、Python 3.0 の文字列を Unicode として扱いますか?
-
01-07-2019 - |
質問
Python (3.0 以降) が Unicode ベースになったので、標準ライブラリがどのように動作するかについては少し混乱しています。CGI や urllib などのモジュールは Unicode 文字列を使用しますか、それとも新しい「バイト」タイプを使用してエンコードされたデータを提供するだけですか?
解決
論理的には、MIME エンコードされたメール メッセージ、URL、XML ドキュメントなどの多くのものは、次のように返される必要があります。 bytes
文字列ではありません。ライブラリが Python 3 用に固定され始め、人々が bytes
/string
実際よりもコンバージョンが増加 str
/unicode
...
他のヒント
この質問 (そして Python 全般) の素晴らしい点の 1 つは、インタープリターをいじるだけで済むことです。 Python 3.0 rc1 は現在ダウンロード可能です.
>>> import urllib.request
>>> fh = urllib.request.urlopen('http://www.python.org/')
>>> print(type(fh.read(100)))
<class 'bytes'>
ここではツーステップダンスが行われます。見る Python 3000 とあなた.
ステップ 1 は、3.0 で実行することです。
ステップ 2 は、API を再考して、おそらくより賢明なことを行うことです。
最も可能性が高いのは、ライブラリが以前の動作と可能な限り互換性を保つために Unicode 文字列に切り替えることです。
その後、おそらく、さまざまなプロトコルの RFC 標準をより適切に実装するためにバイトに切り替える人もいるでしょう。
所属していません StackOverflow