1. ホーム
  2. パイソン

[解決済み】文字列とバイト列の違いは何ですか?

2022-03-29 19:07:11

質問

私はバイト文字列を返すライブラリで作業しており、私はこれを文字列に変換する必要があります。

何が違うのか、よくわからないのですが。

解決方法は?

Python 3 (Python 2では、この違いはあまり明確ではありません) を仮定すると、文字列は文字の列、つまり ユニコードコードポイント これらは抽象的な概念であり、ディスクに直接保存することはできません。バイト列は、当然のことながら、バイトの列です。 できる ディスクに保存されます。これらの間のマッピングは エンコーディング - そして、異なるエンコーディングは同じバイトを異なる文字列にマッピングする可能性があるため、変換を行うためには、特定のケースでどれが適用されるかを知る必要があります。

>>> b'\xcf\x84o\xcf\x81\xce\xbdo\xcf\x82'.decode('utf-16')
'蓏콯캁澽苏'
>>> b'\xcf\x84o\xcf\x81\xce\xbdo\xcf\x82'.decode('utf-8')
'τoρνoς'

どれを使うかわかったら、次は .decode() メソッドを使って、上記のようにバイト列から正しい文字列を取得することができます。念のため .encode() のメソッドは、文字列の場合はその逆となる。

>>> 'τoρνoς'.encode('utf-8')
b'\xcf\x84o\xcf\x81\xce\xbdo\xcf\x82'