
2.3
Python
の基礎
45
最近の流れでは
UTF-8
がエンコーディングの主流となってきていますが、歴史的背景から、場合に
よっては他のさまざまなエンコーディングを目にすることがあるかもしれません。
In [82]: val.encode('latin1')
Out[82]: b'espa\xf1ol'
In [83]: val.encode('utf-16')
Out[83]: b'\xff\xfee\x00s\x00p\x00a\x00\xf1\x00o\x00l\x00'
In [84]: val.encode('utf-16le')
Out[84]: b'e\x00s\x00p\x00a\x00\xf1\x00o\x00l\x00'
この話でよくあるのは、ファイルを扱うときにデータを
bytes
型オブジェクトとして読み込むような
場合です。暗黙的にすべてのデータを
Unicode
文字列に変換してしまうのは
望ましくなかった、という
ような場面が考えられます。
また、こんなことをする必要は滅多に生じないと思いますが、文字列の直前に
b
を付与することでバ
イト文字列自体を定義することもできます。
In [85]: bytes_val = b'this is bytes'
In [86]: bytes_val
Out[86]: b'this is bytes'
In [87]: decoded = bytes_val.decode('utf8')
In [88]: decoded # str
(
Unicode
)になっている ...