無料体験

【情報Ⅰ#81】文字のデジタル表現とは?文字コードや文字化けのしくみをわかりやすく解説|情報1の授業動画【高校・共通テスト対策】Unicode・UTF-8・ASCIIコード・Shift_JIS・EUC

  • 前回は、音のデジタル表現についてお話ししました。 まず、声や音楽などの音は、空気の振動により音波が発生し、それが耳から脳へ伝わることで、どのような音なのかを認識することができます。 その音波を、標本化→量子化→符号化という手順でA/D変換し、同様の音をデジタル化することで、同じ音を生み出すことができます。このときに、サンプリング幅を短くし、量子化の段階数を増やすことで、限りなくアナログデータに近い波形を作ることが可能だとお伝えしましたね。 さて今回は、文字のデジタル表現について詳しく解説していきますよ。

①文字のデジタル化

  • みなさんは普段、さまざまな場面で文字を使っているかと思います。 例えば、LINEを使ってメッセージを送信したり、Twitterで何かをつぶやくときにも、文字を送信していますよね?
  • 毎日大量の文字を送信してるよ!
  • 文字も当然デジタルデータとして送信するわけですから、0と1だけで表現する必要があります。
  • ちょっと前にやった「解像度」のIT領域展開で、TとかAの文字のデジタル化をしたよね?あんな風に送るってこと?
  • あれは文字を「画像」として送る場合の例です。 文字の場合、大きさもバラバラですし、ゴシック体や明朝体などの書式も異なります。何より、画像として文字を送るとデータ量が膨大になってしまい、非効率なのです。
  • なるほどね。それじゃあ、どうやってデジタルデータとして送信するのさ。

②文字コード

  • 例えば、送る側と受け取る側でこのようなコード変換表を持っておきます。 以前からお話ししている通り、デジタル化する際に重要なのは「表現のルール化」です。つまり、このようなコード変換表を持ってそれに従って、送信するというルールを決めておかなければならないのです。
    例として、「HELLO」という文字を送る場合、コード表に従って「8 5 12 12 15」として、それを2進数に変換して送ります。受け取った側はコード表に従って、文字に戻すことでHELLOという文字を送受信できるということです。
    このコード変換表のことを、「文字コード」と呼びます。

    では、ここで問題です。
Q.英語のA-Zの26種類の文字を送受信する場合、1文字あたり何ビット必要でしょうか?
A.5bitです。
  • 2の5乗は32なので、5bitにすれば、最大32パターンの文字を表現できますよね? この「何パターン?」の問題は頻出問題ですし、過去に似たような問題もたくさん解説していますので、忘れてしまった方は過去の動画で復習してください。 また、英語は大文字だけでなく、小文字もあります。また、数字やドットにカンマ、スラッシュといった記号も文章作成では必要です。
    この、英文を構成するのに必要な文字をコード化した文字コードを「ASCIIコード」と言います。 ASCIIコードは、1963年にアメリカで制定された最も基本的な文字コードです。 1文字に7bit使用するため、2の7乗、つまり128種類の文字を表現することができます。 一方で、日本語の表現には、ひらがな、カタカナ、漢字などが必要です。 特に漢字は、常用漢字だけでも2136文字もあるため、日本語の文字を表現するには、1文字あたり16ビット(=2バイト)も必要となります。
    そこで、日本語を表現できる文字コードとして1982年に誕生したのが、「Shift_JIS」です。 また、1985年にUNIXというOSで使われる日本語用文字コードとして、「EUC」が生まれました。
  • めっちゃ便利になったじゃん。
  • しかし、Shift_JISとEUCといった2つの文字コードが併用して使われることで、ある問題が発生しました。
    では、ここで問題です。
Q.2つの文字コードを併用して使うことで発生した問題とは何でしょう?
A.文字化けです。
  • 先程お伝えした通り、文字コードは送る側と受け取る側が同じ文字コード表を持つことで文章の送受信が成立します。 しかし、送る側がShift_JISを使って文章を変換し、受け取る側がEUCの文字コード表で元に戻そうとすると、コード表が違うので意味の分からない文字コードになってしまいます。 その結果起こる事象が、文字化けということなのです。

③Unicode

  • あのさ、せっかくShirt_JISがあるんだから、EUCなんか作らないで、そのままShift_JIS使えば良かったんじゃね?
  • ・・・それは、覇権争いという大人の事情です。 例えば、携帯のキャリアも、docomo、au、SoftBankなどのキャリアがありますよね。 最初はdocomoだけだった携帯キャリアも、docomoよりも良いサービスを提供できると考え、auやSoftBankが参入しました。 このように、いつの時代も、どの業界においても、覇権争いは少なからずあり、文字コードにおいてもそれがあったと考えてください。 一方で、文字コードが増えれば、それだけ文字化けが起こることになり、私たちにとっては不便です。 また、世界では、 日本語のほか、中国語、韓国語、アラビア語など、アルファベット以外の文字を使うさまざまな言語があります。 つまり、日本語専用のShift_JISやEUCがある一方で、中国語や韓国語専用の文字コードもあるということです。 日本だけで通信を行えば良いですが、インターネットなどの情報通信技術が発達して国際的な活動が増えると、日本から中国や韓国といった国際間での通信が増え、さらに文字化けが起こりやすくなります。
    そこで、国や地域別に作られていた文字コードをまとめて多国籍に対応した、国際的な統一文字コードが作られました。その世界統一の文字コードの総称が「Unicode」です。
  • よっ!待ってました!
  • Unicodeの代表と言えば、UTF-8です。 UTF-8はUnicodeの中で世界で最もシェアが高く、世界標準の文字コードとされています。 例えば、日本語のWebサイトは、日本だけでなく、海外から見られることもありますよね?どの世界のPCから見ても日本語を正しく表示する目的で、WebサイトのコードをUTF-8を使ってコーディングすることが今では標準となっています。

まとめ

  1. コンピュータ上で文字を扱うときに用いられる、文字に対応づけられた番号のことを「文字コード」と言う。
  2. 1963年に、最も基本的な文字コードとして「ASCIIコード」が生まれ、その後、日本語対応した「Shift_JIS」や「EUC」といった文字コードが生まれた。
  3. 国や地域別に作られていた文字コードをまとめて作られた、世界統一の文字コードの総称を「Unicode」と言う。