UnicodeとUTF-8の違いは?

勉強になったので、コピペ
http://d.hatena.ne.jp/tyru/20091129/difference_between_unicode_and_utf8




UNICODE...
文字集合:1種類
符号化方式:UTF-8, UTF-16BE, etc


今のシステムで説明すると
その文字集合を実際にコンピュータ上のゼロイチで
対応させる方法のことを符号化方式で、

JIS X 0208文字集合を符号化する主な方法として
EUC-JP、ShiftJIS、ISO-2022-JP(JIS)
っていう3つがあって文字化けとかの問題が出てきたりする。

UNICODEに収録されている文字は、
各国で標準として規定されている文字集合や実際に使用されている文字を持ち寄り、
委員会により取捨選択されている。
日本の文字については当初より JIS X 0201JIS X 0208JIS X 0212 を、Unicode 3.1 では JIS X 0213 の内容を収録している。
( http://ja.wikipedia.org/wiki/Unicode )


Unicodeコンソーシアムが作った文字集合Unicode

Unicode: Unicode Consociumの制定した文字集合。(U+0 - U+1FFFFF)

UTF-8/16/32: Unicode Transformation Format。Unicodeの符号化方式。

 UTF-8: 外字が無いため4Byte長まで。

 UTF-16: UCS-2+サロゲートペア+バイナリ符号化。

ISO 10646で定義された文字集合がUCS(Universal Character Set)

ISO/IEC 10646: 国際文字集合規格(群、面、区、点)。
制定前にUnicodeが出て来たためそのコンパチに。
Unicodeの文字はこのうち0群16面まで。

UCS-4: ISO規格の31bit符号集合。規格化文字集合+外字。

UCS-2: ISO規格の16bit符号集合。基本多言語面のみ。(例:U+1234)

UTF-8/16/32: UCS Transformation Format。UCSのバイナリ符号化方式。(例:0x12 0x34)

 UTF-8: Unicodeの方と違い6Byte長まであり。

そもそもUTF-16UTF-32と違って
バイトストリームのUTF-8にはエンディアン問題はない
UTF-8のBOMはエンディアン対策ではない

Microsoft Windows では "Unicode" といえば
UTF-16 のリトルエンディアンという暗黙の了解になっている。