文字コード ASCIIとUnicode

コンピュータを使用する際、文字コードの知識が必要になることがあるでしょう。
世界中では様々な文字が使用されており、日本だけでもひらがな、カタカナ、ローマ字、漢字などが混在して使われます。
さらにプラットフォーム(OSやアプリケーション)によって取り扱う文字の種類も異なることから状況が複雑になっているのです。

まず、コンピュータはすべてのデータを数値として取り扱い、文字を数値に対応づけて処理します。
そして、コンピュータ内部で文字を表すのに使う数値を「文字コード」(character code)と呼びます。
例えば「よ」というテキストをWindowsのメモ帳に保存してバイナリ・エディタで開くと「82」と表示されます。

文字コード体系が違えば数値と文字の対応が変わり、同一のデータであっても処理するための文字コード体系が違えば、想定外の文字として処理され、文字化けなどが生じてしまうことでしょう。。

文字は情報交換の基盤となるものですから,国家や国際機関が用途などに応じた文字集合を標準規格として定めています。
「ASCII」「ISO-8859」「JIS X 0201」「Unicode」などといった複数の規格を聞いたことがあるかと思いますが、もっとも基本となるのが「ASCII文字集合」。

最も基本的な文字コードとして世界的に普及している、7ビットの整数(0~127)で表現され、ラテンアルファベット(ローマ字)、数字、記号、空白文字、制御文字など128文字を収録しています。
その後進化したコンピューターのほとんどは1バイト(=8ビット)を単位としてデータを扱い、1文字を7ビットではなく1バイトで表すようになりました。
その際、128から255までの128文字分はASCIIでは規定されていない領域となります。

これを利用して、大手コンピュータメーカーや各国の標準化団体などが、自社や自国で必要な文字を収録し、ASCII互換の拡張文字コードとしてそれぞれ独自に規格化しました。
これらはASCIIそのものではありませんが、0から127までの下位領域はASCIIと同じであるため、ASCIIとして扱うことがあります。

日本では日本工業規格(JIS)の一部として、拡張領域に(半角)カナなどを収録したJIS X 0201が策定され、広く用いられています。

世界中には数多くの各国独自の文字コードが存在していますが、これらの文字コードを同時に1つのコンピュータで扱うことは基本的にできませんでした。
そこで、世界中の言語の文字を1つのコード体系に納めた文字コードを作ろうという動きが1980年代から出てきました。

中でもUnicodeは最大65,356文字を扱うことができる2バイト(16ビット)で世界中の文字を表現しようとしたため、字形の異なる、中国語、日本語、韓国語の漢字に同じコードを与えるハンユニフィケーション(Han Unification)と呼ばれる方式をとりました。
現在ではUnicode全体は4バイトで定義(UCS-4)されています。

ネットで見られる複雑なアスキーアートや顔文字は、Unicodeが他の文字集合よりもはるかに多くの文字を含むことで生まれました。

おすすめの記事