1.文字コードとは

コンピュータは漢字やひらがなをそのまま理解することはできません。そこで、漢字やひらがななどの文字を、01データで表す変換が必要になります。この対応のことを文字コードと言います。
文字コードにはいくつかの種類がありますが、たとえば、JISコードの変換表(一部)をみてみましょう。

f:id:mamori_yuto:20181101134016j:plain

■JISコード表(抜粋)

たとえば、ひらがなの「あ」のJISコードは、上記の表から「2224」、「い」であれば「2424」です。
ひらがなカタカナ以外にも、アルファベット、数字、記号なども対応が決められています。

2.さまざまな文字コード

文字コードは1種類ではありません。応用情報技術者試験のシラバスでは、文字コードに関して以下の記載があります。
(3)文字の表現
代表的な文字コードを理解する。
用語例 ASCII コード,EUC(Extended UNIX Code:拡張UNIX コード),JIS コード,シフトJIS コード,Unicode,UCS
このように、いくつかの種類があります。また、先ほどの「あ」ですが、JISコードでは「2422」でしたが、シフトJISでは「82A0」、EUC-JPでは「A4A2」と、文字コードが違えば、全く違うコードになります。

f:id:mamori_yuto:20181027120215j:plain
なるほど!
それで、文字コードが違うと、全く違う文字になって文字化けするのですね。
そうです。では、具体的な文字コードを見ていきましょう。
平成18年 午前 問55を参考にすると、以下のようになります。

①ASCII(American Standard Code for Information Interchange)
ANSI(アメリカの規格団体。日本でいうJIS)
全ての文字を1バイトで表現する。※実際にはわずか7ビット(=128文字)
1バイトで、128文字しか表せないので、漢字は表現することは不可能。⇒できない。Shift-JISやUnicodeなどのマルチバイト文字で表現する必要がある。

ASCIIコードによる文字表記を具体的に考えましょう。1バイトなので8ビットです。
0000 0000 からはじまり、最後は1111 1111 までです。
いくつかの例を紹介します。

文字    16進数表記     2進数表記
0        30(0x30)     0011 0000
1        31(0x31)     0011 0001
a        61(0x61)     0110 0001
b        62(0x62)     0110 0010
LF       0a(0x0a)     0000 1010
CR       0d(0x0d)     0000 1101
-        2d(0x2d)     0010 1101
.        2e(0x2e)     0010 1110

変換ツールとしては、以下があります。
http://web-apps.nbookmark.com/ascii-converter/

②EUC(Extended Unix Code)
・UNIXを中心に普及している複数バイトからなるコードで、漢字も表現できるもの(平成16年 問50)
・英数字は1バイト、漢字は2バイト(H17共通39)

③Unicode または UCS
・万国共通の文字コード
・すべての文字を2バイトで表現するコード体系であり、多くの国の文字体系に対応できる。(H17共通39)
・UCS-2 (Universal multi-octet coded Character Set)とUCSは厳密には別物であるが、UnicodeはUCSの一部であり、同じと考えてよいだろう。
過去問では、「すべの文字を2バイトで表現するコード体系であり、多くの国の文字体系に対応できる(H20AN午前40)」と述べられており、Unicodeと同じ表現になっている。

④シフトJIS
1バイト目がASCIIコードと重複しないようにSHIFT(ずらす)

■バイナリ
「こんにちは」「Hello」などのテキストデータは人間には読みやすいですが、コンピュータはこのままでは理解できません。コンピュータが理解できるのはあくまでも0と1です。
バイナリ(binary) とは0と1からなる「2進数」を意味する。ただ、バイナリデータ、バイナリファイルという表現を使うことで、テキストデータではなく、0と1で構成されたファイルを意味する。(といっても、テキストデータもコンピュータが理解するときには01で理解するので、テキストデータもバイナリである)。バイナリファイルの代表には、画像や音声ファイルがある。また、ソースプログラムをコンパイルした実行ファイルもバイナリと言われる。

3.文字コードに関する過去問

問4 UTF-8の説明に関する記述として,適切なものはどれか。
ア 1文字を1バイトから4バイト(又は6バイト)までの可変長で表現しており,ASCIIと上位互換性がある。
イ 2バイトで表現する領域に収まらない文字は,上位サロゲートと下位サロゲートを組み合わせて4バイトで表現する。
ウ ASCII文字だけを使用することが前提の電子メールで利用するために,7ビットで表現する。
エ 各符号位置が4バイトの固定長で表現される符号化形式である。





【正解】ア