1. ホーム
  2. python

[解決済み] Pythonはコンピュータの中でどのように文字列を保存しているのですか?

2022-02-18 02:52:10

質問内容

Pythonに詳しい方は、Dive Into Python 3を読んだことがある方が多いと思います。4.3章で、こんなことが書いてあります。

Python 3 では、すべての文字列は Unicode 文字のシーケンスです。UTF-8でエンコードされたPythonの文字列や、CP-1252でエンコードされたPythonの文字列というのは存在しません。"この文字列は UTF-8 ですか?"という質問は無効です。

なんとなく意味はわかります。文字列=Unicodeセットの文字であり、Pythonは異なるエンコード方法に従って文字をエンコードする手助けをします。しかし、Pythonの文字はとにかくコンピュータの中でバイトとして保存されているのでしょうか?例えば、s = 'strings'で、sはきっとバイト列'0100100101...'とかとしてコンピュータに格納されているのでしょう。では、ここで使われているエンコード方法 - Python の "default" エンコード方法とは何でしょうか?

ありがとうございます。

解決方法は?

Python 3 は、以下のものを区別しています。 テキスト とバイナリ データ . テキストは Unicode であることが保証されていますが、私が見た限りでは、特定のエンコーディングは指定されていません。ですから、UTF-8であったり、UTF-16であったり、UTF-32¹であったりするわけですが、そのことに気づくことはないでしょう。

ここでの要点は 気にする必要はない。テキストを扱いたいのであれば、テキスト文字列を使い、コードポイント(これは単一の Unicode 文字の番号で、内部 UTF とは独立したものです - コードポイントはいくつかの小さなコードに整理されている場合があります)でアクセスします。 単位 ). もし、バイトが必要なら b"" で、バイト単位でアクセスします。また、特定のエンコーディングでバイト列の文字列を持ちたい場合は .encode() .


¹ PDP-10 で Python を実装するような非常識な人がいれば、UTF-9 でもよい。