Unicode
https://gyazo.com/8b5d2326a698fb153f933f19dbb74408
絵文字も使える
文字化けしない
学習リソース
4 byteになった経緯
1991年当初のUnicode(ver.1.0)では2 byte(0x0000 - 0xFFFF)の文字で世界中の文字を表現しようとした
1文字が2 byteの世界
固定長のエンコーディング方式UCS-2(Universal Character Set coded in 2 octets) 足りなくなった😱
1996年、1文字2 byteの世界を壊さずに、一部の文字を1文字4 byteにする方法(サロゲートペア)が考案された UCS-2を拡張し、2または4 byteの可変長エンコーディングを採用したUTF-16になった
参考
ノーマライズにまつわる歴史
Unicodeには、ベースとなる文字に組み合わせて使うマーク(Combining Diacritical Marks)が定義されている
ドイツ語のウムラウト記号とか
uとその上につける ¨で üを表現
例:é は 0x65 0xCC 0x81と表現できる
e(0x65)と́(0xCC 0x81)を組み合わせた表現
一方で、よく使われている文字は組み合わせ文字(composed character)が存在している
é は0xC3 0xA9で表現できる。
つまり、同じ文字é に複数の表現方法が存在する
table: éの2通りの表記法
表現方法 UTF-8 バイト数 codepoint codepointの数
composed character(é)を使う 0xC3 0xA9 2 U+00E9 1
combining diacriticalをeに組み合わせる 0x65 0xCC 0x81 3 U+0065(e) U+0301(́) 2
これらを同じ文字と扱うためのノーマライズの方法をUnicode Standardが提供している
参考