解説
上のUTF-8文字コード表で,
文字コード表は,The Unicode Standard, Version 14.0に基づいています。
文字コードは16進数(0~F)表記です。
CJK~漢字とは,中国(Chinese),日本(Japanese),朝鮮(Korean)の統一漢字です。
IPA(国際音声字母 International Phonetic Alphabet)とは,世界のすべての言語音を同定し分類するために,国際音声学協会(International Phonetic Association)が制定した記号です。
合成可能文字は直前の文字と合成される文字です。
英数の合成可能文字は,à のように,半角aの直後に表示しています。
記号の合成可能文字は,◌⃐ のように,記号◌の直後に表示しています。
文字の種類をクリックすると「文字コード表」が表示されます。
「文字コード表」で英語フォント名をクリックすると,Unicode規格書を表示します。
「上段unicode/下段UTF-8 」をクリックするとコードの表示・非表示を切り替えることができます。
*のついたカテゴリの文字(主に絵文字や数学記号)は,文字をクリックすると,ツールチップで規格書記載の意味を表示します(英語)。
EFB7BD(unicode 0xFDFD) ﷽ はフォントが横に長いので,アラビア表示形Aの最後の32文字(EFB7B0~EFB7CF)は表示していません。
ジャワ文字(EAA680)は縦に長い(ꦈ など)ので,サンプル欄に表示していません。
文字に割り当てた通し番号を「文字コード」といいます。Unicodeとは,世界中のあらゆる文字のコードを決めた統一規約です。例えば,Aのコードは10進数で65,2進数で01000001,16進数で0x41です。
ASCII:ASCIIコードまたは7ビットコードは,Unicodeの最初の7ビットに割り当てられた,キーボードから直接入力できる英数字と記号です。このうち0-1Fの最初の32個は制御のために使われる文字でC0,残る20-7Fの94個が英数字と記号でGLと呼ばれます。
BMP:Unicodeの最初の2バイト(256×256=約6万種類)を,BMP (Basic Multilingual Plane)といいます。ひらがな,漢字など,ほとんどの文字はBMPでカバーされます。
UTF-8とは,Unicodeをコンピュータで使いやすいように変換したコードです。ASCII文字は1バイトで表され,Unicodeと同じ,その他の文字は2~4バイトで表されます(可変長バイト)。上の表のUTF-8の桁数/2がバイト数です。漢字やひらがななど,主な日本語文字は3バイトで表されます。
UTF-8では,コードのバイト数を先頭のビットで区別できるようになっています。
1バイトコードは先頭が0(0x0~7)
2バイトコードは先頭が110(0xC~D)
3バイトコードは先頭が1110(0xE)
4バイトコードは先頭が11110(0xF0~F7)
n>1バイトコードの2バイト目以降は10(0x8~B)
そして,同じUnicodeは最小バイトのUTF-8で表す規約に基づいて,
1バイトコードは7ビットでUnicodeの0から2⁷-1=127(0x7F),
2バイトコードは11ビットでUnicodeの128から2¹¹-1=2047(0x7FF),
3バイトコードは16ビットでUnicodeの2048から2¹⁶-1=65535(0xFFFF),
4バイトコードは21ビットでUnicodeの65536から2²¹-1=2097151(0x1FFFFF)
を表します。これより,UTF-8を変数v,Unicodeを変数uとすると,
v = (2ⁿ-1)×2⁷ⁿ⁺⁷-2⁶(2-¹u₆)[n=0] + (2⁷+⁶u₀)+(2⁷+⁶u₆)×2⁸+…+(2⁷+⁶u₆ₙ)×2⁸ⁿ
u = ¹v₆×2⁶[n=0] + ⁶⁻ⁿv₈ₙ×2⁶ⁿ + (⁶v₀+⁶v₈×2⁶+…+⁶v₈ₙ₋₈×2⁶ⁿ⁻⁶)
と表されます。ここで,n=[(log₂u-1)/5][2⁷≦u]=[log₂v/8]はUTF-8のバイト数-1,ⁱwₙ=[w/2ⁿ]%2ⁱはw=u,vの第n+1~n+iビット,%は剰余,[ ]は数値の整数部分,または,真なら1偽なら0(アイバーソンの記法)を表します。導出とu-v変換器はここ❐。
なお,vがUTF-8の必要条件を満たすか否かは,以下の不等式で判定できます(カンマはAND):
( n=0, v<2⁷ ) OR ( 0<n<4, 0≤⁸v₈ₙ-2⁸+2⁷⁻ⁿ<2⁶⁻ⁿ, 0≤⁸v₈ₖ-2⁷<2⁶ for k=0,...,n-1, 0xC280[n=1]+0xE0A080[n=2]+0xF0908080[n=3]≤v )
HTMLにおけるUnicodeの表示
HTMLで文字コードを指定して,文字を表示するには,
�
のように&#に続けて10進数で文字コードとセミコロン書きます。または,
�
のように,&#xに続けると16進数で指定できます。文字コードはmetaタグのcharset=で指定したもので,通常UTF-8です。
JavascriptにおけるUnicodeの表示と取得
Javascriptでは,String.fromCodePoint(n₁, n₂, ...)関数でUnicode n₁, n₂, ...を指定して文字列を得ることができます。(例)Unicode 15181455の文字を表示:
String.fromCodePoint(15181455);
また,String.codePointAt(n)関数で,文字列のn+1番目の文字のUnicodeを得ることができます。(例)文字列”福田”の先頭文字のUnicodeを得る:
"福田".codePointAt(0);
文字化け
文字コードはUTF-8に統一されつつありますが,歴史的には色々な文字コードが使われてきました。 Windowsで使われるSHIFT-JIS,電子メールで使われるJISなどです。 もし,書き込みに使う文字コードと,読みだしに使う文字コードが違うと,文字が正しく表示されない,文字化けを起こします。 例