Pythonの文字列
Pythonではcodecsという仕組を使用して、マルチバイト文字をさまざまなエンコードに変換しています。
日本語だけでなく、韓国語、中国語にも対応しているようです。
- マルチバイト文字
2バイト以上のデータで表現する。
1バイトでは表現できない文字のこと
[a] 1バイトで表現できる
[あ] 1バイトで表現できない
- 文字コード
代表的なものを調べて以下にまとめました
ASCII
アルファベットや数字、記号などをまとめた文字コード。最も基本的な文字コードとして世界的に普及しており、他の多くの文字コードがASCIIの拡張になるよう実装されていて、
文字を7ビットの値(0~127)で表し、128文字が収録されている。
「A」はASCIIでは0x41(0xは16進数を表す)。
イメージしづらかったので以下に小文字を英字部分を抜粋しました。
16進 | 文字 |
---|---|
0x61 | a |
0x62 | b |
0x63 | c |
0x64 | d |
0x65 | e |
0x66 | f |
0x67 | g |
0x68 | h |
0x69 | i |
0x6a | j |
0x6b | k |
0x6c | l |
0x6d | m |
0x6e | n |
0x6f | o |
0x70 | p |
0x71 | q |
0x72 | r |
0x73 | s |
0x74 | t |
0x75 | u |
0x76 | v |
0x77 | w |
0x78 | x |
0x79 | y |
0x7a | z |
Shift_JIS | |
日本工業標準調査会で標準化された日本語を含む様々な文字をまとめている、日本語を表すために多く用いられていた文字コードです。 | |
全ての文字を2バイトで表します。 | |
「あ」はShift_JISでは0x82E0です。 | |
UTF-8 | |
現在最も広く使われている標準的な文字コードです。全ての文字を1〜4バイトで表します。世界中の文字を扱えるため、標準的に使われるようになりました。 | |
ASCIIと同じ部分は1バイトで表現し、そのほかの部分を2〜6バイトで表現する可変長の符号化方式となっています。 | |
UTF-8は、ASCIIコードとの互換性が高く、世界中の多くのソフトウェアが使用しています。 | |
「あ」はUTF-8では0xe38182です。 | |
Pythonのバージョン2.xでは、標準の文字コードは ASCII でした。 | |
Python のバージョン3.xでは、標準の文字コードはUTF-8となったため、文字コードを宣言することなく、日本語を扱えるようになっています。 |
ユニコード
国際標準化機構(ISO)でISO/IEC 10646の一部として標準化された文字コードです
目的としては、すべての国で、共通して利用できるエンコード目指して作られたそうです。
文字列をバイト型に変換するには
encode()
記載方法
'文字列'.encode('文字コード名’) ※文字コード=「utf-8」など
decode()
記載方法
b'バイト列'.decode('文字コード名')