開発者向けUnicode FAQ

http://builder.japan.zdnet.com/script/35013935/
Unicodeでは、「文字」と、整数で表される「符号位置」との対応付けが定義されている。ただし、「符号位置」がそのままコンピュータ上で符号として扱われるわけではなく、「符号位置」をバイト列に変換されたものが扱われる。
その方式(符号化方式)が、UTF-8UTF-16

UTF-8

符号位置(1文字)を、1〜4バイト(8ビット*n)で表す。
ASCIIテキストとの互換性がある。Webコンテンツでは主流の方式。
日本語は3バイトで表現されるため、ShiftJISの1.5倍弱のサイズになる。

UTF-16

符号位置(1文字)を、2or4バイト(16ビット*n)で表す。
Windowsの内部コードやJavaの内部コードで利用されている。

UTF-32(Unicode)

符号位置(1文字)を、4バイト(32ビット)で表す。

トルエンディアン・ビッグエンディアン

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だということを示すために付けられる。

UTF-7

ASCII文字はそのまま、非ASCII文字はUTF-16で表現したものをBASE64変換した形になるため、ASCII文字のみでUnicode文書を送ることができる。
電子メールで利用する目的で作られたが、現在は推奨されていない形式でありUTF-8Base64変換する方式が望ましいとされている。