本記事では、コンピュータの内部で文字がどのように数値として表現されているのかを説明し、代表的な文字コードであるJISコード、シフトJISコード、Unicodeの特徴を解説します。文字コードは画面表示やファイル保存、メール送信やWeb閲覧などあらゆる場面で関わる重要な仕組みであり、文字化けの多くの原因にもなっているため、数字と文字の対応の考え方を押さえつつ日本語特有の事情と世界共通のルール作りという二つの観点から整理していきます。
1. 文字は数値として扱われる

この章では、「コンピュータの内部では文字が数値で表現されている」という基本的な考え方を確認します。普段は「あ」や「A」といった形として文字を見ていますが、コンピュータにとってはあくまで0と1の並びであり、人間が読む形になるまでにいくつかの変換が行われています。
文字を数値として扱う仕組み
コンピュータは、電気的なオン・オフを0と1として扱う仕組みで動いています。そのため、「あ」「い」「A」「1」といった文字そのものを直接扱うことはできず、何らかのルールで数値に置き換える必要があります。この「文字と数値の対応表」の役割を果たしているのが文字コードです。
例えば、「A」という文字に対して65、「B」に対して66のように、それぞれの文字に固有の番号を割り当てます。コンピュータ内部では、この65や66といった数値を2進数に変換し、0と1の並びとして処理します。そして画面に表示する段階で、数値から文字へと逆向きの変換を行うことで、人間が読める形に戻しています。
文字コードとは何か
文字コードとは、一つ一つの文字に対して固有の番号(コード値)を割り当てる決まりごとのことです。同じ文字に対していつも同じ番号が割り当てられていることで、異なるコンピュータ同士でも同じ文字を正しくやり取りできます。
ただし、世界にはさまざまな言語があり、歴史的な経緯から複数の文字コードが存在します。特に日本語は、ひらがな・カタカナ・漢字など文字の種類が多いため、文字コードの設計にも工夫が必要でした。その結果としてJISコードやシフトJISコードといった日本語向けの文字コードが生まれ、後に世界共通を目指したUnicodeが広く利用されるようになりました。
2. 日本語向けの文字コード(JISコードとシフトJIS)

この章では、日本語環境で長く使われてきたJISコードとシフトJISコードについて説明します。どちらも日本語を扱うために作られた文字コードですが、設計思想や利用される場面に違いがあります。
JISコードの特徴
JISコードは、日本工業規格(JIS)として定められた文字コードです。主に通信の世界で利用されてきた経緯があり、ひらがな・カタカナ・一部の漢字などを含む文字集合を定義しています。JISコードは2バイト単位で日本語を表現する仕組みを持ち、通信時に文字コードを切り替えるための制御コードなども規定されています。
JISコードは、日本語メールや通信プロトコルの中で利用されることが多かったため、メールソフトなどで文字コードの選択肢として目にする場合があります。現在では後述するUnicodeの普及により使用頻度は下がっていますが、既存システムや古いデータの扱いでは今も理解が求められる場面があります。
シフトJISコードの特徴
シフトJISコード(Shift_JIS)は、JISコードをもとにパソコン向けに扱いやすくした文字コードです。英数字は1バイト、日本語は2バイトで表現する「可変長」の仕組みを採用しており、当時のメモリ容量が限られた環境で効率よく文字を扱えるよう工夫されました。Windows環境で広く使われたこともあり、日本語のテキストファイルといえばシフトJISという時代が長く続きました。
可変長であることはメリットである一方、文字列の途中から読み出したときにどこからが日本語の2バイトなのかを判別しづらいという側面もあります。また、他の国や地域向けの文字コードとの互換性が十分ではなく、国際的な情報交換が盛んになった現代では、Unicodeに徐々に置き換えられつつあります。それでも、業務システムや古いアプリケーションでは今なおシフトJISのデータが多く残っているため、基本的な特徴は押さえておく必要があります。
3. 世界共通を目指したUnicode

この章では、世界中の文字を統一的に扱うことを目指して設計されたUnicodeについて解説します。インターネットや多言語対応アプリが当たり前になった現在、Unicodeは事実上の標準的な文字コードとして広く使われています。
Unicodeの考え方と特徴
Unicodeは、「世界中の文字を一つの大きな文字コード体系の中で扱う」という発想で作られた規格です。ひらがな・カタカナ・漢字はもちろん、アルファベット、記号、さらには各国語の文字まで含め、それぞれにユニークな番号(符号位置)を割り当てています。例えば、アルファベットの「A」にはU+0041、日本語の「あ」にはU+3042といった形で、16進数で表現される番号が付けられています。
Unicodeそのものは「文字に番号を割り当てるルール」を定めている規格であり、その番号を実際にどのようなビット列で表現するかについてはUTF-8やUTF-16などの符号化方式が別途存在します。Webページや多くのアプリケーションではUTF-8が広く利用されており、日本語・英語・他の言語を混在させても文字化けしにくい環境が整っています。
文字化けと文字コードの関係
文字化けの多くは、「保存したときの文字コード」と「読み込むときに想定した文字コード」が一致していないことが原因です。例えば、シフトJISで保存されたファイルを、Unicode(UTF-8)として読み込もうとすると、本来とは異なる文字に解釈されてしまい、画面上に意味不明な記号が並ぶ結果になります。
逆に言えば、同じ文字コードを使って保存・読み込みを行えば、文字化けは発生しにくくなります。最近はUnicode(特にUTF-8)が事実上の標準として使われるようになったため、異なるシステム間での文字化けは以前よりも少なくなりました。それでも既存システムや古いファイルが混在する環境では、JISコードやシフトJISといった文字コードの存在を理解しておくことが、トラブル対応の近道になります。
まとめ
文字の表現を理解するうえでの出発点は、「コンピュータは文字をそのまま扱っているのではなく、数値に置き換えて処理している」という点です。その数値への置き換え方を決めているのが文字コードであり、この対応関係が共有されているからこそ、異なるコンピュータ同士でも同じ文字を正しくやり取りできます。
日本語環境では、歴史的にJISコードやシフトJISコードといった日本語向けの文字コードが利用されてきました。これらは限られた資源の中で日本語を効率よく扱うための工夫が詰まった方式ですが、多言語対応や国際的な情報交換という観点からは限界もありました。その課題を解決するために登場したのがUnicodeであり、現在はUnicode(特にUTF-8)が多くの場面で標準的に使われています。
文字コードの違いを理解しておくと、「なぜ文字化けが起こるのか」「なぜ保存形式によっては別のアプリで開くとおかしくなるのか」といった疑問を筋道立てて考えられるようになります。用語を暗記するだけでなく、文字と数値の対応という基本的な考え方と、日本語向け・世界共通という二つの視点から整理しておくことで、文字の表現に関する問題にも落ち着いて対応できるようになるでしょう。


コメント