Unicode
ナビゲーションに移動
検索に移動
Unicode (ユニコード) とは、Unicode Consortiumが定める符号化文字集合及び文字符号化方式。「Uni」は符号化文字集合が単一 (英: uni) であることから。
文字符号化方式として、次の方式を定めている。
- UTF-8 - 符号化文字集合のコードポイントを表現するために1から4バイト使用する。U+0000からU+007FはASCIIとそのまま対応するため、ASCIIの上位互換。HTML5などがこのエンコーディングを採用している。
- UTF-16 - 符号化文字集合のコードポイントを表現するために固定で2バイト使用する。U+10000以降を表現するためにサロゲートペアを使用する。Java、C Sharp、JavaScript、Windowsなどがこのエンコーディングを採用している。
- UTF-32 - 符号化文字集合のコードポイントを表現するために4バイト使用し、リトルエンディアンで表現する。ただし、コードポイントの上限値はU+10FFFFなので、必然的にメモリ効率が75%以下になる。Linuxの
wchar_t
は大体このエンコーディング。 - UCS-2 - UTF-16の前身。全ての値を世界の文字と1対1で対応させる腹づもりだったが、破綻したのでほとんど使われていない。
- UCS-4 - UTF-32の前身。全ての値を世界の文字と1対1で対応させる腹づもりだったが、U+10FFFFまでしか使わないことになったので事実上放棄されている。
書記素クラスタ[編集]
アラビア語などの言語では複数のコードポイントを結合して (人間の認識による「1文字」として) 表現することがある。このような「塊」のことを「書記素クラスタ」と呼ぶ。書記素クラスタの数はコードポイントの数より少なくなることがあるので、地道にコードポイントを数えるだけでは正しく実装することができない。