今回は、文字コードUTF-8の仕組みとコード表について説明します。意外と文字コードを意識している人は少ないので、ここでは一般的に使われるUnicodeのUTF-8をメインに説明します。
文字コードとは
コンピューター上で利用する文字と、各文字に割り当てたバイトで表した数字との対応関係のことを言います。文字コードは、コンピュータが多くの言語圏で利用されるようになり、種類も多くなりました。代表的な文字コードは100種類以上とも言われています。
日本でおもに使われている文字コードはつぎのとおりです。
- JISコード
正式名称は「ISO-2022-JP」。電子メールで多く使われています。
- SJIS(Shift-JIS)コード
ASCIIコードに日本語を加えたもので、国内携帯電話で使われています。
ASCIIとは、アルファベットや数字、記号などを収録したモジコードの一つ。最も基本的な文字コードとして世界的に普及している。7ビットの整数(0~127)で表現され、ラテンアルファベット(ローマ字)、数字、記号、空白文字、制御文字など128文字を収録している。
- EUC
UNIX上で広く使われています。
- Unicode
コンピュータ用の統一文字コードで、WindowsやXML、Javaなどで使われています。
多くの文字コードが存在するということは、ある文字コードで作成されたデータを別の文字コードに変換しようとしたとき、表示するコードが存在しない場合、正しく表示されず、文字化けするなど互換性の問題が発生します。そこで、世界中の文字を一つの文字コードで対応しようとしたのが「Unicode」です。
Unicode(ユニコード)とは
Unicodeはユニコード・コンソーシアムによって作られた文字コードです。日本語、ギリシャ語、ロシア語、韓国語、記号など、世界で使われているすべての文字を共通の文字集合で利用できるように考えられたものです。Unicodeの「Uni」は、「統一」という意味です。
Unicodeの仕組み
Unicodeは、「符号化文字集合」と「文字符号化方式(エンコーディング)」で構成されています。
「文字集合」は、例えば「すべてのひらがな」や「すべてのアルファベット」などあるルールでまとめた文字のことを言います。その文字集合に、一意の符号を関連付けした規則を「符号化文字集合」と言います。関連付けされた数値をコードポイントといい、「U+xxxx」という形式で表示します。
「文字符号化方式」は、符号化文字集合をコンピュータで扱えるように別のバイト列に変換する方式のことです。符号化方式には、UTF-8やUTF-16などがあります。
具体的に、ひらがなの「あ」を例に説明します。
符号化文字集合「あ」のコードポイントは、「U+3042」
⇓ UTF-8で符号化 ⇓ UTF-16で符号化
「0xe38182」 「0x3040」
と表されます。
ここで注意しておきたいことは、文字を表示させるときは、コードポイントではなく、符号化したUTF-8やUTF-16のバイト列を用いることです。
UTF-8とは
UTF-8は、Unicodeで定義された符号化文字集合をバイト列に変換する方式の一つです。ASCIIコードと互換性をもたせた規格となっているので、多くのソフトウェアで使われています。
UTF-8の仕組み
UTF-8の最初の128文字は、ASCIIとまったく同じです。ASCII文字は1バイトで表現されますが、漢字や仮名文字は3バイト、もしくは4で表現されるので、データサイズはUTF-16(2バイト表現)より大きくなります。
Unicodeのコードポイント | UTF-8 |
0x0000~0x007f (ASCII) | 0x00~0x7f |
0x0080~0x07ff (各国アルファベット) | 0xc080~0xdfbf |
0x0800~0xffff (インド系諸文字、句読点、学術記号、絵文字、東アジアの諸字、全角、半角形) | 0xe08080~0xefbfbf |
UnicodeのコードポイントとUTF-8の対応表
コード表
Unicodeを調べたいときは、「Unicode一覧表」をご覧ください。
UTF-8のコードを調べたいときは、「UTF-8コード表」をご覧ください。
まとめ
今回は、複数ある文字コードの中でUnicodeのUTF-8をメインに紹介しました。文字化けなどが起きたときに、解決手段としてぜひ活用してみてください。