情報I 学習サイト
必須45分

文字コード

学習目標
学習の作業時間の目安
読む(文字集合と符号化方式の区別)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. 代表的な文字コードの特徴

シフトJIS・EUC・UTF-8 などの方式もあります。この教材では、それぞれのバイト数を一般化して示すことはしません。

文字「あ」 符号位置 U+3042 バイト列 文字集合 UTF-8(符号化) E3 81 82(3バイト)
図1 文字から UTF-8 のバイト列まで。文字集合で番号を決め、符号化方式でその番号を2進数にする。

4. 操作

文字を入力すると、文字の符号位置(Unicode)と UTF-8 のバイト列が表示されます。

注意
同じ文字でも、文字コードが違うと別の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 のバイト数を数えます。

易(基本の確認)

  1. 「A」の符号位置(16進数)を答えなさい。
    答えと解き方U+0041。ASCII の番号 41(16) と同じ。
  2. 「0」(数字のゼロ)の ASCII コードを16進数で答えなさい。
    答えと解き方0x30。数字の「0」から「9」は 30(16) から 39(16)。

標準(手順を組み合わせる)

  1. 「あ」(U+3042)を UTF-8 で表したとき、何バイトか。
    答えと解き方3 バイト(E3 81 82)。ひらがなは通常3バイト。
  2. 「漢」(U+6F22)の UTF-8 のバイト数を答えなさい。
    答えと解き方3 バイト(E6 BC A2)。漢字の多くは UTF-8 で3バイト。

共通テスト形式(読み取りと判断)

  1. 文字列 「Aあ」 を UTF-8 で保存したときのバイト数を答えなさい。
    答えと解き方「A」は1バイト、「あ」は3バイトで、合計 4 バイト。文字の種類ごとにバイト数が違うことを確かめる問いです。
  2. ASCII の文字「A」を 7 ビットで表すと 100 0001 となる。これを1バイトに入れると、残りの1ビットはどうなるか。
    答えと解き方先頭に 0 を付けて 0100 0001 とする。ASCII の番号は 0〜127 なので、先頭の1ビットは使われない。

振り返り

← 前のページ 次のページ →