ひとことで言うと
エンコーディングは、文字や情報をコンピューターが扱える数値に変換するルール(変換表)で、送る側と受け取る側が同じルールを使わないと正しく読めなくなる仕組みです。
コンピューターは「文字」をそのまま保存できません。すべての情報は数値として扱います。 「あ」という文字をどの数値に対応させるかを決めたのがエンコーディングです。 この「変換表」が送受信でずれると、文字化けが起きます。
たとえ話でもう少し詳しく
エンコーディングは、モールス信号の変換表に近いです。
- 「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で書いたはずなのに文字化けする」という場合、ファイル自体のエンコーディングと、ブラウザやシステムへの指定がずれていることがほとんどです。エンコーディングは「書いた」だけでなく「正しく伝えた」までセットで確認しましょう。