文字コード:文字を番号で表すルール
文字コードは、文字に番号(数値)を割り当てたルールです。コンピュータは 0 と 1 しか扱えないので、文字も番号に変換して記憶します。英数字向けの ASCII(A=65)や、世界中の文字と絵文字を表せる Unicode(UTF-8)があります。
このページで学べること
- 文字コードが何のためにあるかがわかる
- ASCIIとUnicode/UTF-8のちがいがわかる
- 文字化けが起きるしくみがわかる
- 全角と半角が別の文字だと理解できる
前提知識
- 2進数
- コンピュータの基本
なぜ文字を番号にするのか
コンピュータは電気のオン/オフ、つまり 0 と 1 しか扱えません。そこで文字にも番号を割り当て、その番号を2進数で記憶します。この「文字↔番号」の対応表が 文字コードです。
- ASCII:半角の英数字・記号が中心(A=65、a=97、0=48)。
- Unicode/UTF-8:世界中の文字+絵文字を1つの体系で表せる。今のWebの標準。
文字を番号にすることを エンコード、番号を文字に戻すことを デコードといいます。保存と表示で文字コードがちがうと、別の文字に変換されて 文字化けになります。
1バイト(8ビット)で表せるのは 256通りです。半角の英数字と記号なら、大文字26+小文字26+数字10+記号などで十分におさまります。
ところが日本語は、ひらがな・カタカナ・漢字だけで数千文字以上あります。256通りではまったく足りないので、1文字に複数バイトを使います(UTF-8 では日本語1文字が3バイト、絵文字は4バイトのことが多い)。「文字数=バイト数」が成り立つのは半角英数字だけで、日本語では成り立ちません。文字数の制限とファイルサイズがずれるのは、このためです。
図でイメージする
例題(くわしい手順)
例題1:文字化けが起きるしくみ
「文字化け」がなぜ起きるのかを、順に見てみます。
- 保存:文字を、ある文字コードのルールで番号に変換して記録する(エンコード)。
- 表示:番号を文字コードのルールで文字に戻す(デコード)。
- ズレ:保存時と表示時で文字コードがちがうと、同じ番号でも別の文字になり 文字化けする。
- 確かめる:保存と表示で同じ文字コードを使えば、番号は必ず同じ文字に戻ります。ズレたときだけ別の文字になります。
文字化けを防ぐには、保存も表示も UTF-8 でそろえるのが基本です。
例題2:文字数とバイト数を数える
UTF-8 で「ABC日本」を保存すると、文字数とバイト数はそれぞれいくつですか(日本語1文字は3バイトとします)。
- 文字数を数える:A・B・C・日・本 で 5文字です。
- 半角のバイト数:ABC は1文字1バイトなので 3バイト。
- 日本語のバイト数:3 × 2 = 6 バイト(1文字3バイト × 2文字)。
- 合計する:3 + 6 = 9 バイト。文字数は5、バイト数は9です。
文字数とバイト数は一致しません。「20文字まで」という制限と「20バイトまで」という制限は、日本語ではまったく別の意味になります。
ASCIIとUnicode(UTF-8)の違い
| 文字コード | 表せる文字 | 特徴 |
|---|---|---|
| ASCII | 半角の英数字・記号(128種類) | 1文字が1バイト。古くからある |
| Unicode/UTF-8 | 世界中の文字+絵文字 | 1文字が1〜4バイトの可変長。今の標準 |
日本語や絵文字を扱うなら Unicode(UTF-8)。ASCIIはその一部(英数字)を含んでいます。
よくある間違い
「A」(全角)と「A」(半角)は別の文字で、ちがう番号を持ちます。パスワードや検索で区別されます。
UTF-8では日本語1文字が3バイトになることが多く、文字数とバイト数は一致しません。
多くの文字化けは文字コードの指定ちがいが原因で、正しい文字コードで開けば元に戻ることがあります。
練習問題
まず自分で解いてから解説を開きましょう。
文字化けが起きる主な原因は何ですか。
解答・解説を見る
答え:文字コードの不一致
保存時と表示時で文字コードがちがうと、番号が別の文字に変換されて文字化けします。
つまずいたら → 「保存と表示で文字コードがちがうと文字化けする」(本ページ 例題1)に戻りましょう。
半角の「A」がASCIIで65のとき、「B」「C」の番号はいくつですか。
解答・解説を見る
答え:66、67
ASCIIではA・B・Cが連続した番号(65・66・67)になっています。
つまずいたら → 「ASCII では A=65 から1ずつ増える」(本ページ なぜ文字を番号にするのか)に戻りましょう。
日本語や絵文字を1つの体系で表せる文字コードは何ですか。
解答・解説を見る
答え:Unicode(UTF-8)
Unicodeは世界中の文字と絵文字に番号を割り当てた体系で、UTF-8はその代表的な保存方式です。
つまずいたら → 「世界中の文字を1つの体系で表すのが Unicode」(本ページ なぜ文字を番号にするのか)に戻りましょう。
「A」(全角)と「A」(半角)は同じ文字といえますか。
解答・解説を見る
答え:いえない(別の文字)
見た目は似ていても番号が異なる別の文字です。検索やパスワードでは区別されます。
つまずいたら → 「全角と半角は番号がちがう別の文字」(本ページ よくある間違い①)に戻りましょう。
よくある質問
Q. 文字コードとは何ですか?
文字にコンピュータが扱える番号を割り当てたルールです。たとえばASCIIでは半角の「A」は65、「B」は66という番号になっています。
Q. 文字化けはなぜ起きるの?
保存したときと表示するときで文字コードがちがうと、番号が別の文字に変換されて文字化けが起きます。UTF-8で統一すると防げます。
Q. UTF-8とShift_JISはどちらを使えばよいですか?
いまはUTF-8が標準です。世界中の文字を1つの方式で表せるので、文字化けが起きにくくなります。古いファイルではShift_JISが使われていることがあります。
Q. 絵文字も文字コードで決まっているのですか?
はい。Unicodeに番号が割り当てられています。端末によって見た目の絵はちがっても、同じ番号の文字として送られています。
次に学ぶ内容
高校「情報I」・IT基礎の範囲を参照し、オリジナルに作成(実在試験問題の転載はありません)。正確性は編集方針にそって確認しています。