今日はpython PEP100を読みました。「Unicode デフォルト エンコーディング」の部分で、「Unicode 実装は、強制のために渡される 8 ビット文字列のエンコーディングについて、および Unicode を文字列に変換するためのデフォルトとしてのエンコーディングについて、いくつかの仮定を行う必要がある」と言及しています。特定のエンコーディングが与えられます。
私の質問は、「8 ビット文字列」とはどういう意味ですか? アスキーのことですか?
いいえ、ASCIIは 7 ビットのエンコーディングです。ほとんどのテキスト エンコーディング (UTF-8 および ISO-8859 を含む) は 8 ビット エンコーディングです。
一般的に言えば、基本的な ASCII 文字セットを超えるものは、エンコードに 7 ビット以上を必要とします。そのため、国際データを扱うときは、通常、エンコードされた文字ごとに複数のバイトを使用できるエンコーディングを扱います。Unicode とバイト文字列の型を組み合わせようとすると、Python は自動的にバイト文字列を Unicode にデコードしようとします。デフォルトのエンコーディング (Python 2 では) は ASCII です。これは、Python で頻繁に発生する UnicodeDecodeError 例外の原因です。
ただし、先に進む前に、Unicode とテキスト エンコーディングについて十分に理解しておく必要があります。私はお勧めできます:
UTF-8
広範囲の文字をサポートするために使用されます。UTF-8では、最大4バイトを使用して1文字を表すことができます。
ASCII
128文字のみを定義します。だから7
ビットだけ。ただし、通常は8ビット/文字で格納されます。RS232(旧シリアル通信)は7ビットのバイトで使用できます