tkrd-stack

学習ノート

自分の理解を深めるための技術メモ

← 一覧に戻る

文字コード

UnicodeUTF-8 は、文字をデジタルで扱う際の仕組みにおいて密接に関連していますが、異なる概念を持っています。


1. Unicode:

  • 概念: Unicode は、世界中の文字や記号を一意に表すための**文字集合(文字コード規格)**です。 「どの文字にどの番号を割り当てるか」を決めた標準仕様で、文字に対応するユニークな番号を定義しています。この番号は「コードポイント」と呼ばれます。
  • 特徴:
    • 各文字に一意のコードポイントが割り当てられている(例:
      A
      = U+0041,
      = U+3042)。
    • 世界中のほぼ全ての言語や記号を統一的に表現できる。
    • 文字そのものを表現するための「概念」であり、実際にコンピュータ上で扱う形式(エンコーディング)は規定していない。
  • :
    • 英字
      A
      のコードポイント →
      U+0041
    • 日本語の「あ」 →
      U+3042
    • ハート絵文字 ❤️ →
      U+2764

2. UTF-8:

  • 概念: UTF-8 は、Unicode のコードポイントを実際に**バイナリデータ(0 と 1 の列)に変換する方法(エンコーディング形式)**の一つです。
  • 特徴:
    • 可変長エンコーディング: 1〜4 バイトで文字を表現します。
      • 例:
        • ASCII 文字(英数字など)→ 1 バイト
        • 一部の非 ASCII 文字(日本語、絵文字など)→ 2〜4 バイト
    • ASCII 互換性: ASCII 文字(コードポイントが U+0000〜U+007F)と互換性がある(UTF-8 では ASCII の文字がそのまま 1 バイトで表現される)。
    • 世界中で広く使われるデファクトスタンダード。
  • :
    • A
      → 1 バイト →
      01000001
    • → 3 バイト →
      11100011 10000010 10100010
    • ❤️ → 3 バイト →
      11100010 10011101 10000100

違いのまとめ:

項目UnicodeUTF-8
役割文字集合・文字コード規格Unicode をバイナリで表現するエンコーディング方式
内容文字とコードポイントの対応を定義コードポイントを具体的なバイト列に変換する方式
範囲世界中の文字・記号(抽象的な概念)コンピュータで扱う具体的なデータ形式
A
→ U+0041
A
→ 01000001(1 バイト)
用途文字の標準化(世界共通の規格)Unicode 文字をデータとして保存・通信する

補足: 他のエンコーディング形式

Unicode には UTF-8 以外にもエンコーディング形式があります。

  • UTF-16: 2〜4 バイトで表現。固定長ではなく、2 バイトまたは 4 バイトで表される。
  • UTF-32: 4 バイト固定長で表現。すべての文字が同じバイト長で簡単だが、非効率的。

UTF-8 は軽量かつ ASCII 互換性があるため、特に Web を中心に最も使われています。