文字コード(character encoding)

どの文字にどの番号を割り当て、その番号をどうバイトで表すかを決めた取り決め。

もう少し詳しい説明

文字コードは、どの文字にどの番号を割り当て、その番号をどうバイトで表すかを決めた取り決めです。

コンピュータが扱えるのは数値だけです。「あ」という文字そのものを持つことはできないので、文字と数値の対応表をあらかじめ決めておきます。

たとえば「あ」という1文字は、コンピュータの中ではこうなっています。

文字あ番号(Unicode)U+3042UTF-8 の3バイトE381822進数で書くと111000111000000110000010
「あ」という文字は、まずUnicodeで U+3042 という番号が割り当てられ、UTF-8ではE3 81 82という3バイトになります。コンピュータの中に実際にあるのは、いちばん下の0と1の並びです。文字コードとは、この上から下への変換の決まりごとのことです。

いちばん上が、画面に見えている文字。いちばん下が、実際に記録されている0と1の並びです。この上から下への変換の決まりごとが、文字コードです。

決まりごとが違えば、同じ「あ」でも別の並びになります。たとえばShift_JISなら、「あ」は3バイトではなく 82 A0 の2バイトです。だから、書いたときと違う決まりごとで読むと、別の文字として解釈されてしまいます。

2段に分かれている

ここが最初のつまずきどころです。文字コードの話は、1段ではなく2段でできています。

文字「あ」番号を割り当てる(文字集合)Unicode では U+3042バイトの並びにする(符号化方式)UTF-8 では E3 81 82 の3バイト
文字コードの話は2段に分かれています。どの文字に何番を割り当てるかを決めるのが文字集合、その番号を実際に何バイトの並びにするかを決めるのが符号化方式です。Unicodeは前者、UTF-8やUTF-16は後者にあたります。
段決めること例
文字集合どの文字に何番を割り当てるか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-8Unicodeの符号化方式1〜4バイトの可変長
UTF-16Unicodeの符号化方式2バイト、一部は4バイト

ASCIIの7ビットは数字として問われます。7ビットで表せるのは 2⁷ = 128種類。英大文字・小文字・数字・記号を入れると、ちょうどこのくらいに収まります。

UTF-8がいま主流な理由

英数字「A」1バイト日本語「あ」3バイト
UTF-8は文字によって長さが変わる可変長の方式です。英数字はASCIIと同じ並びの1バイトで済み、日本語は3バイトになります。だから同じ文字数でも、日本語が多いほどファイルは大きくなります。

UTF-8は、英数字をASCIIとまったく同じ1バイトで表します。つまり、英数字だけで書かれた古いファイルは、そのままUTF-8としても正しく読めます。この後方互換が、広く使われている理由です。

日本語は3バイトになるので、同じ文字数ならShift_JIS(全角2バイト)よりファイルが大きくなります。この長所と短所はセットで覚えておいてください。

文字化けはなぜ起きるのか

書いたときと読むときで、使った符号化方式が違うと起きます。

同じバイトの並びでも、UTF-8として読むか、Shift_JISとして読むかで、どの文字だと判断されるかが変わります。3バイトを1文字と見るか、2バイトずつ2文字と見るかが違えば、当然まったく別の文字が並びます。

つまり文字化けは、データが壊れたのではなく、読み方を間違えている状態です。多くの場合、正しい方式で読み直せば元に戻ります。

古いシステムからデータを受け取ったときに起きやすいので、文字コードはやり取りの前に合わせておく必要があります。

覚え方:番号を決める人と、書き方を決める人

2段の関係は、住所と封筒に置き換えると通ります。

番地が同じでも、書き方が違えば見た目は変わります。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