本記事(記事カラム)には広告が含まれています。

UTF‑8 以外の UTF 形式まとめ

記事内に広告が含まれています。

Unicode をエンコードする方式は複数ありますが、現在主流なのは UTF‑8 と UTF‑16 のみです。 他は歴史的理由で生まれたもの、互換性のために存在するもの、実験的なものなどが混在しています。

DMM FX広告(差し込みタイプ)
広告(PR)|自分の投資スタイルを見つける。※タップで開閉
広告(PR)

DMM FXは、「最初の一歩を踏み出す場」として選ばれることがある

口座を開いてみた。取引してみた。思ったよりも難しかった。──そんな経験が、投資との距離感を知るきっかけになることもあります。


サービスを通じて、自分の投資スタイルを見つける。それは、確信ではなくても構いません。「試してみた」という実感が、次の選択の材料になることもあるからです。


DMM FXに関する詳細は、以下の広告(PR)リンクをご覧いただけます。


👇こちらは広告(PR)リンクバナーです

DMMFX

UTF‑16 — Windows と内部処理で今も現役

特徴

  • 2 バイト単位で文字を表す(ただし補助面は 4 バイト)
  • エンディアンがある(UTF‑16LE / UTF‑16BE)
  • BOM が必要になることがある
  • Windows API の標準文字コード

ビット構造

  • 基本多言語面(BMP) → 16bit
  • 補助面(絵文字など) → サロゲートペアで 2×16bit = 32bit

長所

  • 内部処理が高速(固定長に近い)
  • Windows との相性が良い
  • メモリ上での扱いが簡単

短所

  • Web では重い(ASCII でも 2 バイト)
  • エンディアン問題がある
  • サロゲートペアが複雑

使われる場所

  • Windows
  • Java(内部表現)
  • 一部のゲームエンジン

UTF‑32 — 最も単純だが最も重い

特徴

  • 常に 4 バイト固定長
  • エンディアンあり(UTF‑32LE / UTF‑32BE)
  • BOM が必要になることがある

長所

  • すべての文字が 1 コードポイント = 4 バイト
  • サロゲートペアなし
  • 計算が簡単(ランダムアクセスが容易)

短所

  • とにかく重い(UTF‑8 の 4 倍以上)
  • Web では絶対に使われない

使われる場所

  • 一部の内部処理
  • Unicode のテスト用途
  • メモリが潤沢なシステム

CESU‑8 — UTF‑8 のようで UTF‑8 ではない

特徴

  • UTF‑16 のサロゲートペアを そのまま UTF‑8 風にエンコードする方式
  • UTF‑8 と互換性がない
  • Java の内部処理で使われることがある

長所

  • UTF‑16 と相互変換が簡単

短所

  • 標準ではない
  • UTF‑8 と混ざると壊れる
  • Web では禁止

使われる場所

  • Java の内部
  • 一部の古いシステム

UTF‑7 — メール時代の遺物

特徴

  • ASCII のみ許可されたメール環境で Unicode を送るために作られた
  • + を使って Unicode を表現する
  • セキュリティ上の問題が多い

長所

  • ASCII しか通らない環境で Unicode を送れた

短所

  • 脆弱性が多い
  • 読みにくい
  • 現代では不要

使われる場所

  • ほぼ廃止
  • 古いメールサーバーの互換性維持のみ

UTF‑1 — 初期の実験的エンコーディング

特徴

  • Unicode 初期に提案された方式
  • 可変長だが複雑で非効率
  • UTF‑8 の登場で完全に消滅

長所

  • ASCII と互換性があった

短所

  • エンコードが複雑
  • 読みにくい
  • UTF‑8 の完全下位互換ではない

使われる場所

  • 現在はゼロ

UTF‑EBCDIC — IBM メインフレーム向け

特徴

  • EBCDIC ベースのシステムで Unicode を扱うための方式
  • UTF‑8 と似ているが互換性なし

長所

  • IBM メインフレームで Unicode を扱える

短所

  • 一般用途では不要
  • UTF‑8 と互換性がない

使われる場所

  • IBM メインフレームのみ

UTF 形式の比較表

形式可変長/固定長使えるビット数主な用途長所短所
UTF‑8可変長(1〜4B)7/11/16/21bitWeb、UNIX、ファイルASCII互換、軽い日本語は3Bで重め
UTF‑16可変長(2 or 4B)16/21bitWindows、Java内部処理が速いエンディアン問題
UTF‑32固定長(4B)21bit内部処理、テスト単純明快重すぎる
CESU‑8可変長UTF‑16準拠Java内部UTF‑16と相性良い標準外
UTF‑7可変長7bit中心古いメールASCII環境で使えた脆弱性
UTF‑1可変長複雑初期実験歴史的価値完全に廃止
UTF‑EBCDIC可変長EBCDIC準拠IBMメインフレーム向け一般用途なし

まとめ

結論
  • UTF には複数の形式があるが、現代で実用的なのは UTF‑8 と UTF‑16 のみ
  • UTF‑32 は単純だが重すぎる
  • CESU‑8 / UTF‑7 / UTF‑1 / UTF‑EBCDIC は特殊用途か歴史的遺物
  • Web とプログラミングの世界では UTF‑8 が圧倒的標準
  • Windows や Java の内部では UTF‑16 が現役

HR


人気ブログランキング