文字コード
学習目標
- 「文字と番号の対応(文字集合・符号位置)」と「番号を2進数にする方式(符号化方式)」を区別して説明できる。
- Unicode の符号位置を UTF-8 で符号化すると、1文字が何バイトになるかを計算できる。
| 学習の作業 | 時間の目安 |
|---|---|
| 読む(文字集合と符号化方式の区別) | 15分 |
| 例題を追う(「あ」「A」のバイト列) | 10分 |
| 自力演習(段階別の練習) | 15分 |
| 振り返り(確認問題) | 5分 |
1. 文字コードとは
文字も数と同じく0と1で表します。どの文字をどの2進数に対応させるかを決めたものを文字コードといいます。
2. 「文字の集まり」と「2進数への変換のきまり」
文字コードという言葉は、2つの意味で使われます。混同しないように区別しましょう。
| 考え方 | 意味 | 例 |
|---|---|---|
| 文字集合(符号位置) | どの文字に、どの番号を割り当てるか。 | ASCII、JIS X 0208、Unicode(「A」は U+0041) |
| 符号化方式(エンコーディング) | 番号を、どのような2進数(何バイトか)で保存するか。 | UTF-8、Shift_JIS、EUC-JP |
例えば Unicode は「文字に番号を付ける」きまりで、UTF-8 はその番号を 1〜4 バイトの2進数にするきまりです。
3. 代表的な文字コードの特徴
- ASCII: 文字と 0〜127 の番号の対応であり、その番号を7ビットの2進数で表す(符号化する)きまりでもあります。例えば「A」は番号 41(16)、7ビットで 100 0001 です(1バイトに入れて 0100 0001 とも書きます)。
- JISコード: 英数字や半角カタカナは1バイト、漢字など文字種が多いものは2バイト以上で表します。ここでは一部の例だけを扱います。
- UTF-8: Unicode の符号位置(例: 「あ」は U+3042)を、1〜4バイトの2進数に符号化する方式です。ASCII の文字は1バイトのままです。ひらがなは通常3バイトです。
シフトJIS・EUC・UTF-8 などの方式もあります。この教材では、それぞれのバイト数を一般化して示すことはしません。
4. 操作
文字を入力すると、文字の符号位置(Unicode)と UTF-8 のバイト列が表示されます。
注意
同じ文字でも、文字コードが違うと別の2進数になります。文字化けは、保存したときの文字コードと、開くときの文字コードが違うことで起こります。
同じ文字でも、文字コードが違うと別の2進数になります。文字化けは、保存したときの文字コードと、開くときの文字コードが違うことで起こります。
例題: 「A」と「あ」
「A」: 符号位置 U+0041 = 41(16) = 0100 0001(2)。UTF-8 でも ASCII と同じ1バイト。
「あ」: 符号位置 U+3042。UTF-8 では 3バイトの E3 81 82(16)。
同じ文字でも、符号化方式によってバイト数が変わることを確かめましょう。
段階別の練習
自力演習(15分): 符号位置を確かめてから、UTF-8 のバイト数を数えます。
易(基本の確認)
- 「A」の符号位置(16進数)を答えなさい。
答えと解き方
U+0041。ASCII の番号 41(16) と同じ。 - 「0」(数字のゼロ)の ASCII コードを16進数で答えなさい。
答えと解き方
0x30。数字の「0」から「9」は 30(16) から 39(16)。
標準(手順を組み合わせる)
- 「あ」(U+3042)を UTF-8 で表したとき、何バイトか。
答えと解き方
3 バイト(E3 81 82)。ひらがなは通常3バイト。 - 「漢」(U+6F22)の UTF-8 のバイト数を答えなさい。
答えと解き方
3 バイト(E6 BC A2)。漢字の多くは UTF-8 で3バイト。
共通テスト形式(読み取りと判断)
- 文字列 「Aあ」 を UTF-8 で保存したときのバイト数を答えなさい。
答えと解き方
「A」は1バイト、「あ」は3バイトで、合計 4 バイト。文字の種類ごとにバイト数が違うことを確かめる問いです。 - ASCII の文字「A」を 7 ビットで表すと 100 0001 となる。これを1バイトに入れると、残りの1ビットはどうなるか。
答えと解き方
先頭に 0 を付けて 0100 0001 とする。ASCII の番号は 0〜127 なので、先頭の1ビットは使われない。
振り返り
- 「符号位置」と「バイト列」は、どちらが文字の番号で、どちらが2進数の表し方か説明できますか。
- ASCII の文字が UTF-8 でも1バイトのままなのはなぜか説明できますか。