文字コードについて改めて知ろう

コンピューターで文字を表現する為に割り当てられた数字の組み合わせを文字コードといいます。
「あ」は1番、「い」は2番・・・といったように番号を振って、その文字を管理します。
コンピューターの環境によって、さまざまな文字コードが使われています。

<文字コードが複雑化した背景>

歴史的な経緯により、複数の文字コードが存在します。

最初に作られたのは、ASCIIという100文字弱の単純な1バイトコードでした。これはアメリカで標準化された規格であり,英語に使われるアルファベットの文字のみでした。したがってアルファベットにアクセント記号をつける欧州の言語には適しません。また、漢字のように何千文字もあるような文字体系は、当然、1バイトのコードでは表現できません。
こういった背景から、国や地域ごとの要件に対応した文字コードを作りたいということで、様々な文字コードが開発されていきました。

<文字コードの種類>

半角系

<ASCII>

ASCIIはAmerican Standard Code for Information Interchangeの略です。アメリカ規格協会(ANSI)が制定した文字コードで、1文字を7ビットで表現しており、誤り検出用に1ビットを付加した8ビットで構成されています。ラテンアルファベット、数字、記号、空白文字、制御文字などの128文字を表現することができます。
ASCIIコードで扱っている文字はいわゆる半角文字となりますが、古くから使用しているメールソフトやブラウザでは半角カナに対応していない場合があるので避けるべきとされています。アプリケーションのバージョンが最新のものであれば特段気にする必要はありません。現在は国際標準化機構(ISO)により国際標準となっています。

さまざまな言語・地域で策定された文字コード のほとんどはASCIIの基本アルファベット・数字・記号をそのまま利用し、新たに文字を追加する形で拡張しています。

JIS系

<JISコード(ISO-2022-JP)>

JISコードは、インターネットや電子メールで日本語を表記する際に、最も標準的に使用されている文字コードです。特に電子メールでの使用が一般的です。
日本工業規格(JIS)により定められた7ビット単位の符号化方式で、通常の文字列では表現することができない特殊な文字や機能(制御文字)については、エスケープシーケンスという特殊な文字の並びにより表現しています。

<Shift-JIS>
Shift-JISコード(SJIS)はMicrosoft社により定められたコードです。WindowsやMS-DOS、Macで使用されています。エスケープシーケンスは使用されていません。そして半角文字も全角文字も一律2バイト(16ビット)で扱うので、表示された文字数とバイト数が一致するという特徴があります。また文字の前半の8ビットで半角文字か全角文字を区別することが可能です。
半角文字(制御文字・英数記号・半角カナ)は JIS X 0201 の文字をそのまま使用し、全角文字は、1バイト目を JIS X 0201 で未使用の 0x81~0x9F、0xE0~0xEF、2バイト目を 0x40~0x7E、0x80~0xFC の領域に計算式でシフトして符号化します。

<EUC-JP>

Extended Unix Codeを略したもので、主にUNIX/LinuX系システムで使用される符号化方式です。
ASCII と JIS X 0208(漢字)、JIS X 0201(半角カナ) を扱います。漢字は区点番号に 0xA0 を足すと EUC となります。
例えば、「あ」(4区2点)は、0x04 0x02 + 0xA0 0xA0 = 0xA4 0xA2 で「あ」となります。半角カナは SS2(0x8E) を付加します。

Unicode系

コンピュータの環境に対応していない文字コードを使用すると、いわゆる文字化けを起こしてしまいます。例えばWindowsで作成したファイルをメールでUnix/Linux系のコンピュータへ送信すると、意味の分からない文字列になってしまい、メールの受取人が読むことができません。

そういった問題を解消するために、Unicodeはユニコード・コンソーシアムにより制定されました。文字を4バイトで表現し、アルファベット、漢字、カナ、アラビア文字など世界中の文字を扱えるようにしています。現在はISOで規格化されており、JavaやXMLは基本コードとしてUnicodeを採用しています。そしてUnicodeで定義されている文字を実際にデータとして使用する場合には、文字符号化方式(エンコーディング)により符号化して使用します。

Unicodeで管理している文字を実際に使う際には、「文字符号化方式(エンコーディング)」を使い、符号化文字集合をコンピューター上で扱えるように数値変換します。

「文字符号化方式」の代表的なものが、よく耳にするUTF-8やUTF-16です。「Unicode=UTF-16」「Unicode=UTF-8」と誤解してしまいがちですが、「符号化形式」の中にUTF-8やUTF-16を含みます。

<UTF-8>

世界的にも最もポピュラーな文字コードで、Unicode用の符号化方式の1つです。ASCIIで定義している文字を、Unicodeでそのまま使用することを目的として制定されました。
Unicodeの符号を8bit単位で表します。

<UTF-16>

UTF-16は、UTF-8と異なり、ASCII互換ではありません。
Unicodeの符号を16bit単位で表します。

各国・地域でよく使われる文字コード

英語・・・ASCII(94文字)
日本語・・・Shift-JIS(9500文字※Windows)
西ヨーロッパ言語・・・ISO-8859-1(189+27文字)
中国語・・・GB2312(7445文字)
韓国語・・・KS C 5601-1987(8224文字)
タイ語・・・TIS-620(181文字)

比較してみると、漢字を使用する東アジアの言語は文字数が多いことが分かります。

まとめ

変化が速い、IT業界、Web業界ですが、文字コードは、あまり変化しないものの1つです。
基本をしっかり覚えておくことで、今後長く知識を活用していくことができます。

タイトルとURLをコピーしました