【もじえんこーでぃんぐ】

文字エンコーディング とは?

💡 文字とバイトを対応させる「翻訳ルールブック」
📌 このページのポイント
文字エンコーディング(Encoding) 文字 変換 エンコード方式 UTF-8 U+3042 Shift_JIS JIS X 0208 3バイト E3 81 82 2バイト 82 A0 同じ文字でもバイト列が違う エンコーディングの流れ 文字 「あ」 コードポイント U+3042 エンコード UTF-8変換 バイト列 E3 81 82 エンコーディングが異なると同じ文字でもバイト列が変わり、文字化けの原因になる
文字がエンコード方式によって異なるバイト列に変換される仕組み
ひよこ ひよこ

文字エンコーディングって何のためにあるの?

ペンギン先生 ペンギン先生

コンピュータは「A」や「あ」という文字を直接理解できなくて、0と1の数字しか扱えないんだ。文字エンコーディングは「あ」を「0xE3 0x81 0x82」というバイト列に対応させるルールで、これがないと文字を保存したり送受信したりできないよ。

ひよこ ひよこ

UTF-8とShift-JISって何が違うの?

ペンギン先生 ペンギン先生

両方とも「文字→数字のルール」だけど異なるルールブックなんだ。UTF-8は世界中の文字をカバーする国際標準で、1文字を1〜4バイトで表す。Shift-JISは日本語のために作られた古い規格で、Windowsや古いシステムで今でも使われているよ。

ひよこ ひよこ

文字化けはどうして起きるの?

ペンギン先生 ペンギン先生

送り手が「UTF-8のルールで変換した」データを、受け手が「Shift-JISのルールで読もうとした」時に起きるんだ。ルールブックが合っていないから、「あ」という文字に対応するバイト列を別の文字として解釈してしまうんだよ。

ひよこ ひよこ

おもしろい!文字化けを防ぐにはどうすればいいの?

ペンギン先生 ペンギン先生

「全部UTF-8で統一する」のが現代の最善策だよ。データベースの文字コード設定・HTMLのmeta charsetタグ・ファイルの保存形式・通信のContent-Typeヘッダーが全てUTF-8で揃っていれば文字化けはほぼ起きない。問題は古いシステムとの連携でShift-JISのデータが来た時で、変換処理が必要になるんだ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「文字エンコーディング」って出てきたら「文字をコンピュータの数字に変換するルールのことで、合わないと文字化けするやつだな」と思えばだいたいOK!
📖 おまけ:英語の意味
「Character Encoding」 = 文字符号化
💬 Encode(エンコード)は「符号化する・変換する」という意味で、文字という概念をコンピュータが扱えるデジタルデータに変換することを指すよ
← 用語集にもどる