概要
UTF-8 (UCS Transformation Format - 8bit) は、Ken Thompson と Rob Pike が 1992 年 9 月に Plan 9 OS のために設計し、1993 年 1 月に X/Open で発表された Unicode の 8bit 可変長エンコーディングで、現代インターネット・OS・プログラミング言語の事実上世界標準となった重要な文字符号化方式です。1-4 バイト可変長で全 Unicode (16 億字) を表現可能、ASCII 範囲 (0-127) は 1 バイトで完全互換、日本語等の CJK (中国・日本・韓国) 統合漢字は 3 バイトで効率的に圧縮。自己同期性 (バイト列の途中から正しい文字境界を判定可能)・エンディアン非依存 (バイト順問題なし)・ASCII 完全互換の優れた特性により、Shift_JIS・EUC-JP・UTF-16 などの先発エンコーディングをすべて置き換え、HTML5 (2014)・JSON (2006)・Linux ディストリビューション (2005 年頃から)・macOS (2001 年以降)・Python 3 (デフォルト)・Web 標準として 2010 年代以降に完全確立しました。
主な特徴・仕組み
- 設計者: Ken Thompson (B 言語・UNIX 共同開発者)・Rob Pike (Plan 9・Go 言語共同開発者)
- 設計年: 1992 年 9 月 (Plan 9 OS 向け)、1993 年 1 月 X/Open 発表
- 標準化: RFC 3629 (2003)・ISO/IEC 10646
- バイト数: 1-4 バイト可変
- ASCII 互換: 0-127 範囲は 1 バイト・ASCII と完全同一
- 2 バイト範囲 (U+0080-U+07FF): 80h-DFh で開始、ラテン拡張・ギリシャ・キリル等
- 3 バイト範囲 (U+0800-U+FFFF): E0h-EFh で開始、CJK 統合漢字・日本語等
- 4 バイト範囲 (U+10000-U+10FFFF): F0h-F7h で開始、絵文字・新規 Unicode 拡張
- 自己同期性: バイト列の任意位置から文字境界判定可能
- エンディアン非依存: UTF-16 と異なり BE/LE 区別なし
- BOM: U+FEFF (EFh BBh BFh) で UTF-8 識別可能 (推奨されない)
スペック比較表
| エンコーディング | ASCII 互換 | バイト数 | エンディアン | 普及度 |
|---|
| ASCII | 完全 | 1B |