HOME備忘帳

Unicodeがどんな風にUTF-8に割当てられているか

(2018-01-12 追記)全体的に文章調整など。

前提

Unicodeというコードは、特にコンピュータ用とは限りません。

Unicodeの「U+FFFF」というのは16進数なのでコンピュータ用かと思いがちですし、実際コンピュータで扱うことが多いですが、イコール(いわゆる)文字コードではありません。

UTF-8とは、Unicode文字をバイト列としてどう表現するか、という体系です。昨今のインターネットはUTF-8が使われていることが多いです。
UTF-16などは、Unicodeを別の方法で表現しています。Windowsの中はUTF-16らしいです。Javasriptの中も。

[ ページ先頭へ ]

どのように割り当てられているか

Unicodeのどの範囲がUTF-8のどの範囲に割り当てられているか、の一覧は以下の通り。

unicode UTF-8
U+0000 ~ U+007F [00-7F] 1バイト
ASCIIコード互換
U+0080 ~ U+07FF [C2-DF][80-BF] 2バイト
U+0800 ~ U+FFFF
BMP(基本多言語面)はここまで
E0[A0-BF][80-BF]
[E1-EF][80-BF][80-BF]
3バイト
U+10000 ~ U+1FFFFF F0[90-BF][80-BF][80-BF]
[F1-F7][80-BF][80-BF][80-BF]
4バイト

先頭のバイトを確認して:

00-7Fだったら、1バイト文字。今思うと、なんとも贅沢な。

80-BFは2バイト目以降専用なので、先頭がこれだったらデータ壊れてます。

C2-DFだったら2バイト文字。

E0-EFだったら3バイト文字。

F0-F7だったら4バイト文字。ついに4バイト、というか、Unicode自体も桁増えちゃってます。後付け感…。

U+200000以降を表現する、F8-FBで始まる5バイト、FC-FDで始まる6バイトの仕様もあるみたいですが、とりあえずそっとしておきます。

Unicodeの何番がどの文字か

歴史的紆余曲折があったり、現在も更新されていたりということもありますが、とにかく量が多いので公式に当たってください。

ユニコード公式サイトのコード表はこちら:http://www.unicode.org/charts/

もっとばっくり、顔文字はどの辺かな?とかはWikipediaへ:https://ja.wikipedia.org/wiki/Unicode#ブロックの一覧

[ ページ先頭へ ]

Unicodeの雑学

元々は「U+16進数4桁」で、世界中の使いそうな文字を網羅するはずだったUnicode。現在、基本多言語面と言われているのは、この最初に決めた文字たちです。

基本多言語面は、UTF-8なら3バイトまでで、UTF-16ではサロゲートペア(2個イチで表現する方法)なしで表せます。

16ビットの枠内に全世界の文字を収録するという計画は早々に破綻し、1996年のUnicode 2.0の時点で既に、文字集合の空間を16ビットから広げることが決まった。

Unicode@wikipedia より引用

いまUnicodeのバージョンいくつだろうと公式サイトチェックしたら、2017年6月20日リリースの10.0.0、とのこと。

最終更新日:2018/01/12

[ ページ先頭へ ]