oracle

UTF-8の仕組みおよび特性

Unicodeの中でもUTF-8は他の符号化方式(UTF-16、UTF32)と比べ可変長である点においては特殊です。文字によって1byte~4byteに長さが異なります。裏を返すとコードポイントの範囲によって「何バイト使用するのか」が決まります。このルールは固定長と比較して複雑ではありますがASCII文字と重複する部分は同じ1バイトで表現している点は大きなメリットだと思います。また、WEBサイトの文字コードシェアを見ても圧倒的にUTF-8が利用されています。

1~4バイト構成文字例
バイト 割当の範囲
文字 コードポイント 16進数 補足
1バイト文字 U+0000〜U+007F A U+0041 0x41 半角大文字”A”

2バイト文字 U+0080〜U+07FF Σ U+03A3 0xCEA3 シグマ(U+2211にも∑が割り当たっているがこれとは別物。U+2211のシグマは3バイト文字)
3バイト文字 U+0800〜U+FFFF U+3042 0xE38182 通常の「あ」
4バイト文字 U+10000〜U+10FFFF 𩸽 U+20E3D 0xF0A9B8BD

ホッケ(魚+花)

文字境界の判定方法

UTF8では、以下のように先頭1バイトを見れば何バイト文字なのか判断がつきます。2文字以上の場合ビットパターンが’10’始まりなので、文字の境界を判定する事も容易です。

スポンサーリンク
コピペで使う