鳩丸ぐろっさり (用語集)

bakera.jp > 鳩丸ぐろっさり (用語集) > UTF-8

用語「UTF-8」について

UTF-8 (ゆーてぃーえふえいと)

UCS-4 (ISO10646, Unicode と等価) の文字を表現するための文字符号化方式のひとつです。RFC3629 で定義されています。当初はRFC2044RFC2279でしたがRFC3629によって破棄されました。

UTF-8 では、各文字を1~4オクテットで表現します。どの文字が何オクテットになるのかは決まっていて、下の表のようになります。

UCS-4 range (hex.)UTF-8 octet sequence (binary)
0000 0000-0000 007F0xxxxxxx
0000 0080-0000 07FF110xxxxx 10xxxxxx
0000 0800-0000 FFFF1110xxxx 10xxxxxx 10xxxxxx
0001 0000-001F FFFF11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

以上、RFC2279 2. UTF-8 definition より

xxxx の部分には任意のビット列が入ります。

まず 007F までの文字、すなわちASCII文字は 1オクテットで表現されます。これについては完全にUS-ASCII互換です。

それ以外の文字は複数オクテットで表現されますが、最初の 1オクテットを見れば、何オクテットで表現されている文字なのかが分かります。1つの文字の 1オクテット目は 11 で、2オクテット目以降は 10 で始まる決まりなので、ある文字の後半が次の文字の前半と結びついてしまって……などというよくある悲劇は避けられます。

なお、UTF-8には「冗長な符号化」と呼ばれるセキュリティ問題が存在します。冗長な符号化は不正なものとして破棄しなければなりません。Unicode Web Traversalの項も参照してください。

最近の日記

関わった本など