Unicode とは
文字集合のこと。ひとつひとつの文字に 符号位置 と呼ばれる整数値を付けて管理している。
UTF-8, UTF-16, UTF-32 とは
文字符号化方式 のこと。符号位置の整数値をコンピュータが使用できるようにバイト列に変換する。
エンディアンとは
複数のバイトからなるデータをメモリに記録する際やネットワークで送受信する際などに、バイトを並べる順番のこと。バイトオーダ と呼ぶこともある。ビッグエンディアンでは上位側から、リトルエンディアンでは下位側から並べる。
検証用コード
この記事を書くにあたって Python で検証したときのコードです。
In [1]: import unicodedata
In [2]: import binascii
In [3]: unicodedata.name('鬱') # 名前を調べる
Out[3]: 'CJK UNIFIED IDEOGRAPH-9B31'
In [4]: ord('鬱') # 符号位置を調べる
Out[4]: 39729
In [5]: binascii.hexlify('鬱'.encode('UTF-8')) # UTF-8 でバイト列にエンコードしてから 16 進数表現に変換する
Out[5]: b'e9acb1'
In [6]: binascii.hexlify('鬱'.encode('UTF-16'))
Out[6]: b'fffe319b'
In [7]: binascii.hexlify('鬱'.encode('UTF-16LE'))
Out[7]: b'319b'
In [8]: binascii.hexlify('鬱'.encode('UTF-16BE'))
Out[8]: b'9b31'
In [9]: binascii.hexlify('鬱'.encode('UTF-32'))
Out[9]: b'fffe0000319b0000'
In [10]: binascii.hexlify('鬱'.encode('UTF-32LE'))
Out[10]: b'319b0000'
In [11]: binascii.hexlify('鬱'.encode('UTF-32BE'))
Out[11]: b'00009b31'
In [12]: binascii.hexlify('快感'.encode('UTF-16'))
Out[12]: b'fffeeb5f1f61'
In [13]: binascii.hexlify('快感'.encode('UTF-16LE'))
Out[13]: b'eb5f1f61'
In [14]: binascii.hexlify('快感'.encode('UTF-16BE'))
Out[14]: b'5feb611f'