エンコーディング

エンコーディングは、文字や画像などの情報をコンピューターが扱えるデータ形式に変換するルールです。

エンコーディング のアイキャッチ図解
まずは、こう考えるとつかみやすいです。

エンコーディングは、異なる国の言葉を互いに読めるように決めた共通の変換表のようなものです。同じ表を使わないと、文字化けが起きます。

ひとことで言うと

エンコーディングは、文字や情報をコンピューターが扱える数値に変換するルール(変換表)で、送る側と受け取る側が同じルールを使わないと正しく読めなくなる仕組みです。

コンピューターは「文字」をそのまま保存できません。すべての情報は数値として扱います。 「あ」という文字をどの数値に対応させるかを決めたのがエンコーディングです。 この「変換表」が送受信でずれると、文字化けが起きます。

たとえ話でもう少し詳しく

エンコーディングは、モールス信号の変換表に近いです。

  • 「A」を「・-」に変換するという決まりがある
  • 送る側も受ける側も同じ変換表を使えば、正しいメッセージが届く
  • 変換表が違えば、まったく別の意味に解読されてしまう

Webでも同じです。 「UTF-8」「Shift_JIS」などのエンコーディングはそれぞれ「このひらがなはこの番号」という変換表です。 HTMLファイルが「UTF-8で書かれている」とブラウザに伝えずに表示しようとすると、ブラウザは別の変換表で読もうとして文字化けが起きます。

よく出る場面・使いどころ

  • HTMLファイルのcharsetを指定して、文字化けを防ぐとき
  • CSVファイルをExcelで開いたら日本語が文字化けしたとき(Shift_JIS / UTF-8の違い)
  • APIでデータを送受信するとき、文字コードを統一するとき
  • URLに日本語が含まれるときのパーセントエンコーディング(%E3%81%82 など)

似た言葉との違い

  • 文字コード
    • エンコーディングとほぼ同じ意味で使われることが多い
    • 厳密には「文字コード」は文字と番号の対応表、「エンコーディング」はその変換方法という整理もあるが、現場では区別なく使われることが多い
  • 圧縮
    • データを小さくするための変換
    • エンコーディングはデータの意味を保ったまま形式を変えるもので、必ずしも小さくはならない
  • 暗号化
    • データを読めない形に変えてセキュリティを確保する仕組み
    • エンコーディングは秘密にすることが目的ではなく、決まったルールで変換するだけ

実務で気にするポイント

  • 新しいシステムやWebサイトでは基本的にUTF-8を使う
  • ファイルを保存するときのエンコーディングと、読み込むときのエンコーディングを合わせる
  • 古いシステムと連携する際は、Shift_JIS などの他エンコーディングへの変換が必要なことがある
  • HTMLの <meta charset="UTF-8"> はファイルの先頭近くに書く

注意: 「UTF-8で書いたはずなのに文字化けする」という場合、ファイル自体のエンコーディングと、ブラウザやシステムへの指定がずれていることがほとんどです。エンコーディングは「書いた」だけでなく「正しく伝えた」までセットで確認しましょう。