http://builder.japan.zdnet.com/script/35013935/
Unicodeでは、「文字」と、整数で表される「符号位置」との対応付けが定義されている。ただし、「符号位置」がそのままコンピュータ上で符号として扱われるわけではなく、「符号位置」をバイト列に変換されたものが扱われる。
その方式(符号化方式)が、UTF-8やUTF-16。
UTF-8
符号位置(1文字)を、1〜4バイト(8ビット*n)で表す。
ASCIIテキストとの互換性がある。Webコンテンツでは主流の方式。
日本語は3バイトで表現されるため、ShiftJISの1.5倍弱のサイズになる。
リトルエンディアン・ビッグエンディアン
UTF-16, UTF-32は16ビット、32ビット単位で扱われるが通信などではそれを8ビットに区切って扱う必要がある。
その際に、下位8ビットを先に配置するのがリトルエンディアン(LE)、上位8ビットを先頭に配置するのがビッグエンディアン(BE)である。
この「バイト順マーク(BOM)」をファイル先頭に置いた形式もある。
UTF-8,UTF-16,UTF-32は上記の区分けによって、以下のように分類される。
| BOM無し BOM有り | LE BE -------------------------------------------------- UTF-8 | UTF-8※ UTF-8(BOM有り) UTF-16 | UTF-16LE UTF-16BE UTF-16 UTF-32 | UTF-32LE UTF-32BE UTF-32 ※UTF-8にはエンディアン指定は無い。 BOMはUTF-16や32ではなく、UTF-8だということを示すために付けられる。