1. Unicode(ユニコード)
文字に「番号」をつけた世界共通のリスト(辞書)のこと。 文字と番号のペア(コードポイント)を管理しているだけで、まだメモリの保存形式は決まっていない。
- 【具体例】
- アルファベットの
q= 世界共通で 「113番」 と決まっている - 日本語の
あ= 世界共通で 「12,345番」 と決まっている
- アルファベットの
2. UTF-16 / UTF-8(エンコード方式)
Unicodeの番号を、コンピューターのメモリ(0と1の箱)に保存するための「具体的な変換ルール」のこと。 ルールによって、箱をいくつ使うか(何ビットにするか)の切り分け方が変わる。
- 【具体例:UTF-16というルールの場合】 「基本的には、最初から 16ビット(箱2つ分) を1セットとして、きれいに区切って保存しよう!」というルール。JavaScriptの内部処理はこれ。
- 【具体例:UTF-8というルールの場合】 「英語みたいに小さい番号は 8ビット(箱1つ)、日本語みたいに大きい番号は 24ビット(箱3つ) のように、文字に応じて箱の数を変えて保存しよう!」というルール。Webサイトの通信などで主流。
3. UTF-16 文字コード
UTF-16というルールに従って、実際にメモリに保存された**「0と1の身代わりデータ(暗号データ)」**そのもののこと。 コンピューターは文字をそのまま扱えないため、このデータを文字の身代わり(コード)として処理する。これを人間に分かりやすい10進数に翻訳したものが、プログラムで目にする数字。
【具体例:q(113番)をUTF-16で保存したとき】
- 実際のデータ:
00000000 01110001(16ビットの枠に収まった0と1の身代わりデータ) - 人間に見える数字に直すと:
113 - ※TypeScriptの
charCodeAt()が引っ張り出してくるのは、この変換された113という数字です。
- 実際のデータ:
【具体例:あ(12,345番)をUTF-16で保存したとき】
- 実際のデータ:
00110000 01000010(16ビットの枠にピッタリ収まった0と1の身代わりデータ) - 人間に見える数字に直すと:
12345
- 実際のデータ: