EmoArt
投稿する
用語集

UTF-8 とは

最終更新: 2026-05-17·約 4 分

この記事は約 4 分で読めます。

Web ページ、API、メールヘッダ、データベース。現代の文字エンコーディングの事実上の標準が UTF-8 です。Unicode のコードポイントを 1〜4 バイトの可変長で表現する仕組みで、ASCII との下位互換性を持ちながら、 絵文字を含む全 Unicode 文字を扱えます。普段意識しないところで、デジタル文字の流通基盤として機能しています。

定義

UTF-8 (8-bit Unicode Transformation Format) は、Unicode コードポイントをバイト列に変換するエンコーディング方式の 1 つです。 Ken Thompson と Rob Pike が 1992 年に設計し、その後 RFC 3629 として標準化されました。 Unicode 全範囲 (U+0000 から U+10FFFF) を 1 文字あたり 1 〜 4 バイトの可変長で表現します。

バイト構造

コードポイント範囲バイト数
U+0000 - U+007F1 バイトASCII (a, A, 0, !)
U+0080 - U+07FF2 バイトラテン拡張、ギリシャ、キリル
U+0800 - U+FFFF3 バイト日本語、中国語、韓国語
U+10000 - U+10FFFF4 バイト絵文字、古代文字、補助漢字

ASCII との互換性

UTF-8 の重要な設計上の特徴は、ASCII (U+0000 - U+007F) を 1 バイトでそのまま表現することです。 英数字や半角記号だけで書かれたファイルは、ASCII としても UTF-8 としても同じバイト列で解釈されます。 既存の ASCII テキスト処理ツールが UTF-8 ファイルを破壊せずに扱える後方互換性が、Web での普及を後押ししました。

UTF-16 / UTF-32 との比較

方式1 文字主な用途絵文字の扱い
UTF-81〜4 バイトWeb, API, ファイル4 バイトで表現
UTF-162 または 4 バイトJava, JS の内部表現サロゲートペアで 4 バイト
UTF-324 バイト固定内部処理 (まれ)4 バイト固定

Web の標準としての地位

W3C は HTML5 で文字エンコーディングを UTF-8 と推奨し、現代の Web ページの 98% 以上が UTF-8 で配信されています。 HTTP ヘッダ、JSON、XML、メール本文、ファイル名、URL の percent-encoding まで、Web の至るところで UTF-8 が前提です。 新規開発で UTF-8 以外を選ぶ理由はほぼありません。

BOM (Byte Order Mark)

UTF-8 のファイル先頭に EF BB BF という 3 バイトの BOM を付ける運用がありますが、 Web 標準では UTF-8 BOM は推奨されません。BOM 付き UTF-8 は古い Windows 系ツール (メモ帳など) で生成されますが、 Linux / Mac のツールや Web サーバーでは想定外のバイトとして扱われ問題を起こすことがあります。 新規ファイルは BOM なしで保存するのが現代の運用です。

実務での注意点

  • 文字数とバイト数の混同: 日本語 1 文字は UTF-8 で 3 バイト、絵文字は 4 バイト。バイト数で長さを判断するとマルチバイト文字が混乱の元になる
  • データベースの文字セット: MySQL の utf8 は実は 3 バイトまでしか扱えない不完全実装。絵文字を扱うなら utf8mb4 を選ぶ
  • URL エンコード: 日本語や絵文字を URL に含めると、UTF-8 のバイト列を percent-encoding で符号化することになる
  • ファイル読み込み: 文字コードを誤って Shift_JIS で開くと文字化けする (古い CSV など)

よくある誤解

  • ❌ 「UTF-8 は 8 ビット固定」→ ✅ 8 ビットを最小単位とする可変長
  • ❌ 「UTF-8 のほうが UTF-16 より遅い」→ ✅ 内容と処理依存。日本語多用なら UTF-16 が短い場面もある
  • ❌ 「BOM は必須」→ ✅ UTF-8 では BOM なしが標準的

関連用語

この記事は役に立ちましたか?