【ゆにこーど】

Unicode とは?

最終更新:
💡 文字の共通番号と、その扱い方を定める標準

文字や記号を共通のコードポイントで扱うための標準。Unicode Consortiumが開発し、UTF-8・UTF-16・UTF-32などの符号化方式で保存・通信する。見た目の一文字が複数のコードポイントになる場合もある。

📌 このページのポイント
Unicode:文字の番号と符号化を分ける 文字とコードポイント A → U+0041 あ → U+3042 UTF-8のバイト列 41 E3 81 82 符号化 同じUnicodeを表す複数の方式 UTF-8 8ビット単位 1〜4単位 UTF-16 16ビット単位 1または2単位 UTF-32 32ビット単位 1単位 上の長さはコードポイント一つの符号化 見た目の「が」を表す二つの列 U+304C / U+304B + U+3099 この例はNFC正規化で同じ列になる 文字のまとまり・番号の数・バイト数は別
Aと「あ」のコードポイントとUTF-8のバイト列。見た目の一文字が複数のコードポイントになる例もある。
ひよこ ひよこ
UnicodeとUTF-8は何が違うの?
ペンギン先生 ペンギン先生
Unicodeは文字やそのコードポイントを定める標準で、UTF-8は保存や通信のための符号化方式だよ。例えば「あ」はU+3042で、UTF-8ではE3 81 82の3バイトになる。UTF-16やUTF-32もUnicodeを表す方式で、それぞれ単位や長さが違うんだ
ひよこ ひよこ
コードポイントを数えれば文字数になる?
ペンギン先生 ペンギン先生
見た目の一文字と一致しないことがあるよ。文字と結合する記号を複数のコードポイントで表す場合もある。絵文字にも複数を組み合わせるものがあるので、画面上の文字数を扱うなら書記素クラスタというまとまりも考えるんだ
ひよこ ひよこ
Unicodeなら文字化けは起こらない?
ペンギン先生 ペンギン先生
保存した方式と読む方式が食い違えば起こるよ。UTF-8のバイト列を別の方式として読むと、意図した文字にならない場合がある。入力と出力の符号化方式を合わせることが大切で、対応するフォントや表示環境も別に確認するんだ
ひよこ ひよこ
BOMを付ければ解決する?
ペンギン先生 ペンギン先生
BOMは先頭のU+FEFFで、符号化方式やバイト順の目印に使えるよ。UTF-8にはバイト順の違いがなく、BOMは方式の目印になる。ただしBOMを期待しない形式もあるので、何にでも付けるのではなく、その形式の決まりに従うんだ
ひよこ ひよこ
見た目が同じ文字列も違うことがある?
ペンギン先生 ペンギン先生
あるよ。「が」はU+304C一つでも、U+304Bと結合濁点U+3099でも表せる。コードポイント列をそのまま比較すると違うが、NFC正規化後はこの例を同じ列にできる。似て見える全ての文字を同一にする機能ではないので、比較の目的に合う方式を選ぶんだ
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Unicode」って出てきたら「文字を共通の番号で扱う標準、UTF-8はその符号化方式」と思えばだいたいOK!
📖 おまけ:英語の意味
「Unicode」 = 文字を共通のコード体系で扱う標準の名前
💬 言語や機器が違っても文字を共通に扱うことを目指す名前だよ。Unicode Consortiumが標準を開発・拡張していて、単に一つのファイル形式を指すわけではないんだ

参考資料

← 用語集にもどる