【文字コード】文字を表現するには?

コンピュータでは、2進数を使って情報のやり取りしています。足し算などの計算は2進数を使って実現できます。

しかし、コンピュータを使っているときに遭遇するのは、数字だけじゃないですよね。

数字以外のアルファベットひらがな漢字などの文字も扱います。

このような文字をコンピュータで扱うために考えられたのが、文字コードというものです。

文字コード

実はコンピュータは、文字を文字として認識していません。

というのも、実はコンピュータでは、文字を表す際には、文字コードという一覧の中から「〇〇列の○○番に保存されているあのデータを持ってきて!」みたいなことが内部で行われているわけで、コンピュータが文字を書いているわけではありません。

そして、その○○列の○○番にどういう文字があって…という文字の一覧表のようなもののことを、文字コード表といいます。

有名な文字コードはASCIIや、Unicodeなどですね。

実際に文字を表すには

では、今回はASCIIコードを使って、実際に文字を表記する手順を説明します。手順っていうほど複雑だったりややこしいものではないんですけどね(笑)

今回は、ある文字列をメールとして友達に送る場合について考えます。

ASCIIコード表は検索すればすぐに出てくるので、そちらを参考にしてください。

手順1:入力する文字列を決める

これは、コンピュータ側ではなくユーザ側が行うことですね。今回は日本の有名グループである「SMAP」を入力することにします。

手順2:文字コード表と照らし合わせて列番号と行番号を格納する

ユーザが入力した文字情報を参考にして、文字コード表と照らし合わせます。

「S」は3行目の5列目に情報が保存されているので、2進数で「0101 0011」と格納します。列番号が先に来ることに気を付けます。

同様に、「M」は「1101 0100」、「A」は「0001 0100」、「P」は「0000 0101」です。

手順3:格納した2進数の情報を送信

手順2で文字を2進数データとして記録したので、それを送信します。

手順4:2進数データから文字を表示

友だち側のコンピュータでは、私が送った2進数データの情報とASCIIコード表を照らし合わせて、文字情報を表示します。そうすることで、友だちのコンピュータでも「SMAP」と表示することができます。

文字化け

先程、「SMAP」という文字列を表示する流れを説明しました。

しかし、私のコンピュータではASCIIコード表をもとに2進数データを送っていても、友だちがUnicodeコード表をもとに2進数データを復元して文字データを表示した場合、ミスマッチが起こってしまいます。これが俗にいう文字化けの正体です。

他に原因がある場合もありますが、一番分かりやすい原因が、この文字コード表によるものです。

文字コードの種類

今回は代表的な文字コードを5つピックアップしました。

ASCII

米国規格協会(ANSI)によって定められたもの。アルファベットと数字と数種類の記号しか表すことができません。

ANSIについてはコチラ↓

7ビットを使って1文字を表すことができ、残りの1ビットを誤り検出のパリティビットとして使います。パリティビットについてはここではスルーします。

EBCDIC

IBM社が定めた文字コードで、ASCIIとは違い、8ビットを使って1文字を表します。

最も基本的なものだと半角英数字記号制御文字などしか対応していませんが、拡張したものだと日本のカタカナも扱えたりします。

IBM社についてはコチラ↓

シフトJIS(S-JIS)

日本向けの文字コードで、ひらがな漢字カタカナを扱えます。Windowsでも使われており、1文字を2バイトで表します。もちろん、アルファベットなども扱えます。

EUC

UNIX上で日本語の文字を扱う場合に利用されてきた文字コードの1つです。

UNIXについてはコチラ↓

こちらも日本語文字コードです。基本的には1文字を2バイトで表しますが、一部では3バイトで表すこともあります。

Unicode

全世界の文字コードを1つに統一したような文字コードです。1文字を表すのに3バイト必要だったり4バイト必要だったりします。

どんどんグレードアップしており、最新版は2020年の3月にリリースされているようです。

例題

例題

コンピュータで使われている文字符号のうち、適切なものはどれか。

ア ASCII符号はアルファベット、数字、特殊文字及び制御文字からなり、漢字に関する規定はない。

イ EUCは文字符号の世界標準を作成しようとして考案された16ビット以上の符号体系であり、漢字に関する規定はない。

ウ Unicodeは文字の1バイト目で漢字かどうかが分かるようにする目的で制定され、漢字とASCII符号を混在可能にした符号体系である。

エ シフトJIS符号は、UNIXにおける多言語可能の一環として制定され、ISOとして標準化されている。


正解:

まとめ

まとめ
  • 文字に数値を割り当てて、その数値と文字の割り当てをまとめたものを文字コードという。
  • 有名な文字コードとして、ASCII、EBCDIC、シフトJIS、EUC、Unicodeなどがある。
  • ASCIIはANSIが定めたものであり、1文字を7ビットで表す。
  • EBCDICはIBM社が定めたもの。
  • シフトJISは日本語文字コードであり、ひらがなや漢字、カタカナなども扱える。
  • EUCはUNIX上で日本語を扱う場合に利用されている。
  • Unicodeは全世界の文字コードを1つに統一することを目的とした文字コード。

ということで、今回の記事はここまでです。何か参考になる情報があれば嬉しいです。

最後までお読みいただき、ありがとうございました。