文字の表現
私たちは普段、パソコンやスマートフォンで日本語や英語の文字を当たり前のように表示しています。しかし、コンピュータの内部で扱えるのは 0と1のビット列(数値)だけです。文字を直接理解する仕組みは持っていません。では、どのようにして画面に「あ」や「A」を表示しているのでしょうか。その仕組みの鍵となるのが文字コードです。
文字コードとは
Section titled “文字コードとは”文字コードとは、文字の一つひとつに固有の番号(コード)を割り当てる取り決めのことです。たとえば「A」という文字に「65」、「B」に「66」という番号を割り当てておけば、コンピュータは数値の65を受け取ったときに「A」を表示すればよいとわかります。
この「文字と番号の対応表」が文字コードであり、コンピュータ同士が正しく文字をやり取りするための共通ルールとなっています。
ASCIIコード ── 英数字の基本
Section titled “ASCIIコード ── 英数字の基本”文字コードの出発点となったのがASCIIコード(アスキーコード)です。ASCIIはアメリカで策定された規格で、英字の大文字・小文字、数字、記号、制御文字など 128種類の文字を 7ビットで表現します。
たとえば、ASCIIコードでは次のような対応になっています。
| 文字 | ASCIIコード(10進数) | ASCIIコード(2進数) |
|---|---|---|
| A | 65 | 1000001 |
| B | 66 | 1000010 |
| 0(数字のゼロ) | 48 | 0110000 |
ASCIIコードは英数字と基本的な記号のみを対象としているため、日本語のひらがな・カタカナ・漢字は表現できません。そこで、日本語を扱うための文字コードが開発されていきました。
JISコード ── 日本語対応の文字コード
Section titled “JISコード ── 日本語対応の文字コード”JISコード(正式にはISO-2022-JP)は、日本産業規格(JIS)によって定められた日本語用の文字コードです。ひらがな、カタカナ、漢字、英数字などを2バイト(16ビット)で表現します。
JISコードの特徴は、電子メールなどのネットワーク通信で広く使われてきたことです。ASCIIコードとの切り替え(エスケープシーケンス)を使うことで、英語と日本語を混在させて送受信できる仕組みになっています。かつては日本語の電子メールの標準的な文字コードとして利用されていました。
シフトJISコード ── パソコン向けの日本語文字コード
Section titled “シフトJISコード ── パソコン向けの日本語文字コード”シフトJISコードは、JISコードをもとに、パソコンで使いやすいように改良された文字コードです。マイクロソフト社のWindowsで長年にわたって標準的に使用されてきたため、日本のパソコン環境で非常に広く普及しました。
JISコードではASCIIコードとの切り替えにエスケープシーケンスが必要でしたが、シフトJISコードではその必要がなく、半角英数字(1バイト)と日本語(2バイト)を混在して扱える点が大きなメリットです。
ただし、シフトJISコードは日本語を扱うことに特化しているため、中国語や韓国語など他の言語を同時に扱うことはできません。
Unicode ── 世界中の文字を一つの体系で
Section titled “Unicode ── 世界中の文字を一つの体系で”インターネットの普及により、世界中のさまざまな言語を一つのシステムで扱う必要性が高まりました。各国がそれぞれ独自の文字コードを持っていると、異なる言語間でのデータのやり取りが非常に複雑になるからです。
この課題を解決するために策定されたのがUnicode(ユニコード)です。Unicodeは、世界中の文字を一つの統一的な番号体系で管理することを目指した国際的な文字コード規格です。日本語、英語、中国語、韓国語、アラビア語など、あらゆる言語の文字に固有の番号が割り当てられています。
Unicodeの代表的な符号化方式(実際にデータとして保存する方法)がUTF-8です。UTF-8は、文字の種類に応じて 1バイトから4バイトの可変長で文字を表現します。英数字は1バイト(ASCIIコードと互換性あり)、日本語は主に3バイトで表現されます。現在、Webページやプログラムのソースコードなど、幅広い場面で標準的に使われています。
試験で出るポイント
文字コードの比較
Section titled “文字コードの比較”ここまでに紹介した代表的な文字コードを整理しましょう。
| 文字コード | 対応する文字 | バイト数 | 主な用途・特徴 |
|---|---|---|---|
| ASCIIコード | 英数字・記号(128種類) | 1バイト(7ビット) | 文字コードの基本。英語圏で策定 |
| JISコード | 日本語(ひらがな・カタカナ・漢字)+英数字 | 2バイト | 電子メールなどの通信用 |
| シフトJISコード | 日本語+英数字 | 1〜2バイト | Windows環境で長年標準的に使用 |
| Unicode(UTF-8) | 世界中のあらゆる文字 | 1〜4バイト(可変長) | 現在のWebやソフトウェアの標準 |
試験で出るポイント
文字化け ── なぜ文字が正しく表示されないのか
Section titled “文字化け ── なぜ文字が正しく表示されないのか”Webページやメールで、文字が「ã‚ã„ã†」や「??????」のように意味不明な記号になってしまった経験はないでしょうか。これが文字化けと呼ばれる現象です。
文字化けは、送信側(書き手)と受信側(読み手)で異なる文字コードを使っているときに発生します。たとえば、シフトJISコードで書かれたデータを、UTF-8として読み取ろうとすると、番号と文字の対応がずれてしまい、正しい文字が表示されません。
文字化けを防ぐためには、データを作成する側と表示する側で同じ文字コードを使うことが大切です。現在は多くのシステムがUTF-8に統一される方向に進んでおり、文字化けのリスクは以前より減ってきています。
コンピュータは文字を直接扱うことができないため、文字コードという「文字と番号の対応表」を使って文字を数値に変換しています。文字コードは、英数字のみを扱うASCIIコードから始まり、日本語を扱うJISコード・シフトJISコードへ、そして世界中の文字を統一的に扱うUnicodeへと発展してきました。異なる文字コード間のやり取りで文字化けが起きることを理解しておきましょう。