文字コード(character encoding)
- テクノロジ系
- 情報メディア
- ITパスポート
- 基本情報
- 応用情報
- 重要度 ★★☆☆☆
どの文字にどの番号を割り当て、その番号をどうバイトで表すかを決めた取り決め。
もう少し詳しい説明
文字コードは、どの文字にどの番号を割り当て、その番号をどうバイトで表すかを決めた取り決めです。
コンピュータが扱えるのは数値だけです。「あ」という文字そのものを持つことはできないので、文字と数値の対応表をあらかじめ決めておきます。
たとえば「あ」という1文字は、コンピュータの中ではこうなっています。
いちばん上が、画面に見えている文字。いちばん下が、実際に記録されている0と1の並びです。この上から下への変換の決まりごとが、文字コードです。
決まりごとが違えば、同じ「あ」でも別の並びになります。たとえばShift_JISなら、「あ」は3バイトではなく 82 A0 の2バイトです。だから、書いたときと違う決まりごとで読むと、別の文字として解釈されてしまいます。
2段に分かれている
ここが最初のつまずきどころです。文字コードの話は、1段ではなく2段でできています。
| 段 | 決めること | 例 |
|---|---|---|
| 文字集合 | どの文字に何番を割り当てるか | Unicode、JIS X 0208 |
| 符号化方式 | その番号を何バイトの並びにするか | UTF-8、UTF-16、Shift_JIS |
この2つは対になっているので、どの文字集合を、どの方式で符号化しているのかという形で結び付きます。UTF-8とUTF-16はUnicodeを符号化する方式、Shift_JISは日本語用の文字集合(JIS X 0208・JIS X 0201)を符号化する方式です。
Unicodeは文字集合、UTF-8は符号化方式です。「Unicodeで保存する」という言い方は、正確には少し足りていません。同じUnicodeでも、UTF-8とUTF-16ではファイルの中身のバイト列が変わります。
試験では、この2つを入れ替えた選択肢が出ます。番号を決める側か、バイトにする側かで読み分けてください。
よく出る文字コード
| 名前 | 対象 | 1文字の大きさ |
|---|---|---|
| ASCII | 英数字と記号 | 7ビット(128種類) |
| Shift_JIS | 日本語(JIS X 0208・JIS X 0201) | 英数字と半角カタカナは1バイト、全角文字は2バイト |
| EUC-JP | 日本語(UNIX系でよく使われた) | 日本語は主に2バイト |
| Unicode | 世界中の文字(文字集合) | — |
| UTF-8 | Unicodeの符号化方式 | 1〜4バイトの可変長 |
| UTF-16 | Unicodeの符号化方式 | 2バイト、一部は4バイト |
ASCIIの7ビットは数字として問われます。7ビットで表せるのは 2⁷ = 128種類。英大文字・小文字・数字・記号を入れると、ちょうどこのくらいに収まります。
UTF-8がいま主流な理由
UTF-8は、英数字をASCIIとまったく同じ1バイトで表します。つまり、英数字だけで書かれた古いファイルは、そのままUTF-8としても正しく読めます。この後方互換が、広く使われている理由です。
日本語は3バイトになるので、同じ文字数ならShift_JIS(全角2バイト)よりファイルが大きくなります。この長所と短所はセットで覚えておいてください。
文字化けはなぜ起きるのか
書いたときと読むときで、使った符号化方式が違うと起きます。
同じバイトの並びでも、UTF-8として読むか、Shift_JISとして読むかで、どの文字だと判断されるかが変わります。3バイトを1文字と見るか、2バイトずつ2文字と見るかが違えば、当然まったく別の文字が並びます。
つまり文字化けは、データが壊れたのではなく、読み方を間違えている状態です。多くの場合、正しい方式で読み直せば元に戻ります。
古いシステムからデータを受け取ったときに起きやすいので、文字コードはやり取りの前に合わせておく必要があります。
覚え方:番号を決める人と、書き方を決める人
2段の関係は、住所と封筒に置き換えると通ります。
- 文字集合 … どの家に何番地を割り当てるかを決める(Unicode)
- 符号化方式 … その番地を封筒にどう書くかを決める(UTF-8・UTF-16)
番地が同じでも、書き方が違えば見た目は変わります。Unicodeは番号の表、UTF-8はその書き方。この対応だけ持っておけば、選択肢で入れ替えられても気づけます。
試験ではこう出る
科目A(旧・午前)の情報メディア分野で出ます。多いのは、文字コードの名前と説明を結び付けさせる問題と、UTF-8やUnicodeの特徴を選ばせる問題です。ASCIIが7ビットで128種類、という数字も問われます。応用情報では、文字化けの原因や、システム間でデータをやり取りするときの注意点として出てきます。
判断の軸は2つです。Unicodeは文字集合、UTF-8・UTF-16・Shift_JISは符号化方式。 ただし、UTF-8とUTF-16が符号化するのはUnicodeですが、Shift_JISが符号化するのは日本語用の文字集合です。そして、UTF-8は可変長でASCIIと互換がある。 この2点を押さえておけば、たいていの選択肢は切れます。「Unicodeは1文字を必ず2バイトで表す」という形の選択肢は定番の誤りです。
関連する用語
- Unicode
- 世界中の文字に番号を振った文字集合。番号をバイトにする方式がUTF-8やUTF-16
- UTF-8
- Unicodeの符号化方式の1つ。1〜4バイトの可変長で、英数字はASCIIと同じ1バイト
- ASCII
- 英数字と記号を7ビットで表す最も基本的な文字コード。UTF-8はこれと互換がある
- Shift_JIS
- 日本語向けの符号化方式。全角は2バイト。UTF-8と混ざると文字化けの原因になる
- 文字化け
- 書いたときと読むときの符号化方式が食い違い、別の文字として解釈される現象
ミニクイズ
UTF-8の説明として、最も適切なものはどれか。
正解は 4番:Unicodeの文字を1〜4バイトの可変長で表現し、ASCIIの範囲は1バイトで表す
UTF-8はUnicodeの符号化方式の1つで、文字によって1〜4バイトと長さが変わる可変長方式です。英数字はASCIIと同じ1バイトで表されるため、ASCIIだけで書かれたファイルはUTF-8としてもそのまま読めます。「すべて2バイト固定長」はUTF-16に近い説明ですが、UTF-16でも一部の文字は4バイトになるため、例外なく2バイトという方式は存在しません。「日本語を表す7ビットの体系」は誤りで、7ビットで表せるのは128種類しかなく、これはASCIIの説明にあたります。字形を画像として保存するのはフォントや画像データの話で、文字コードとは別のものです。
最終更新:2026-09-20