みなさん「文字コード」という言葉をご存知ですか?最近のパソコン利用では文字コードを気にすることも少なくなっていることでしょう。文字コードとは
パソコンなどでは文字を扱うために、文字に番号を割り当ててあります。その文字と番号の関係付け
のことです。このコードにはいろいろ種類があります。文字化けが起こるのはこのためです。昔のブラウザ(ホームページ閲覧ソフト)には文字化けに対して文字コードを自分で切り替えする機能がありました。(現在はブラウザが自動的に判断するので文字化けが起こることはほとんどありません。)
今回は日本で使われる文字コードの種類や特徴を紹介します。文字コードは大きく2つに分類される?JISとShift_JIS、ANSIの違い。またUnicodeとUTF-8について。さらにUTF-8のBOMとは?など、ちょっとマニアックな雑学です。
目次
2つの分類―文字集合と符号化方式

文字コードは大きく2つに分けられます。1つは文字集合。もう1つが文字の符号化方式です。
文字集合・Unicode、ASCIIコード、JISコードなど
コンピュータなどで表現する文字の集合体のことです。日本語の文字集合はJISコードで
- ひらがな(ぁ・あ・ぃ・い・ぅ・う・・・わ・ゐ・ゑ・を・ん)
- カタカナ
- 漢字
等が表記されています。
もちろん日本語のみならず、半角英数字の集合体はASCIIコード。その他各言語に文字にコードがあり、それぞれ文字集合があります。これら世界中の文字集合を集め合わせた、文字コードの集大成がUnicodeです。
文字の符号化方式・Shift_JIS、EUC、UTF-8など
個々それぞれ文字の表現方式を符号化方式といいます。同じ文字でもコードにより表現に使う値(コード)が異なるのです。例えばひらがなの「あ」は文字集合体であるJISでは「2422」ですが
- Shift_JIS「82A0」
- EUC「A4A2」
- UTF-8「E38182」
なのです。
文字コードの種類とその特徴

ここからは日本でよく使われる文字コードについてご紹介します。
ASCII(アスキー)コード
英語圏で使われる英数字などの半角文字の文字集合です。7ビットで構成されています。
1ビットは2進法で1桁です。ゆえに7ビットは2進法での7桁。つまり2の7乗(=128)文字が収録されています。
8ビット文字
半角のカタカナはこのASCIIコードに1ビット加えた8ビット(JIS8単位)コードが使われます。
また、西洋でも8ビット(ASCIIコード+1ビット)が使われています。8ビットのうち頭文字が1から始まる文字にドイツ・フランス・スペインの各言語が割り当てられているのです。
メールで文字化け
みなさんも聞いたことがあるかと思います。電子メールを打つ時など、全角文字と半角カタカナ文字が混ざると文字化けするという話を。これはコンピュータが8ビットの半角カタカナを(1桁少ない)ASCIIの7ビット文字に変換してしまうから起こるのです。
もともと電子メールは英語圏で考えられました。そのため8ビットの文字を扱うことは想定されていないからです。
JISコード
JISコードはその名からもわかるように、日本工業規格が定めた文字コードの一つです。このコードは文字集合体とお伝えしましたが符号化文字としても使われます。電子メールの日本語表記で最も使われる文字コードです。ASCIIコードの7ビットの半角文字、8ビットの半角カタカナ文字を加えた1バイトJISと、16ビットの漢字コードで表現します。
1バイト=8ビット=2の8乗=256です。
EUC・UNIXのために作られた
EUCはextended UNIX code(拡張UNIXコード)の略で、UNIXというOSのたに作られた文字コードです。UNIXで英語以外も扱う為の物で、多くの国の言語が収録されています。そのうち特に日本語を表わす場合EUC-JP、中国語はEUC-CN、韓国語はEUC-KRと言います。
日本でEUC使う際は半角英数字は英語圏で16ビットにしたもの、日本語は文字集合のJISから作られたEUC-JPを使用します。
またUNIXは多くのWebサーバで使われています。
Shift_JIS(シフトジス)コード
Shift_JIS コードはマイクロソフト社が作り、MS-DOSやWindowsなどで使われてきました。JISコードでは7ビット(ASCIIコード)や8ビット(半角カタカナ)がありました。Shift_JISはこれら1バイト文字も漢字と同じ16ビットにしたものです。
また、JISはコード領域に文字が連続して並べられているのに対し、Shift_JISはいくつかの文字集合に分割。離れた領域へ移動(シフト)されれています。
ANSIとShift_JISとの関係
以前はWindowsといえばShift_JISが一般的でした。しかし最近Shift_JISがなくなり、代わりにANSIというコードが加わっていました。実はこの2つはほぼ同じなのです。ANSIはShift_JISの「拡張型」や「世界標準化」ともいわれます。
UnicodeとUTF-8
Unicodeは
世界の文字集合の集大成とお伝えしました。このUnicodeでは1文字4バイトで、世界の主要言語、記号や絵文字まで収録されています。Unicodeの文字集合を基にした符号化方式がUTF-8です。
最もポピュラーなUTF-8コード
UTF-8は世界中で最も使われている文字コードです。ASCIIコード部分は1バイト、その他の部分は2~6バイトといったように長さが異なります。様々な機器、OSとの互換性がいいのが特徴です。
そのため例えばUNIXで作られたメールをWindowsパソコンで開いても、UTF-8で書かれていれば文字化けの心配もありません。WindowsでもUTF-8が使うことができるからです。
UTF-8のBOMありとBOMなしとは
メモ帳などUTF-8でテキストを保存する時のことです。「UTF-8(BOMなし)」と「UTF-8のBOM付き」というコードを目にしたことがある方もいると思います。このBOMとは「byte order mark」の略語で、
どのような文字コードを使っているか文字コードの種類を表すものです。UTF-8の場合、BOMなしのデータの頭に「0xEF 0xBB 0xBF」の3バイトが加わります。
「他のコードと混同しないようにBOMを付けて保存すべきではないか?どうしてBOMなしが存在するのか?」と考える方がいると思います。もちろんです。エクセルなどで使用するcsvファイルなどではBOMを付けた方がいいと言われています。今回は紹介しないUTF-16やUTF-32などコードとの区別が付かないことがあるからです。
しかしBOMがない方がいい場合もあります。それはホームページに使われるHTMLやPHPといったファイルです。サーバ上で動的処理を行うPHP。サーバがBOM付きファイルの処理を正常に行えないことがあるからです。
最後に・なぜ文字コードこんなにいろいろある?
様々な文字コードについてお話ししましたが、最後に、どうしてこんなにいろいろ文字コードがあるのかをお伝えします。これには文字コードの進化の経緯によります。
元々コンピュータは英語圏で開発されました。そのためASCIIコードの7ビットしか必要ありませんでした。その後、日本語のJISコードが出て、ASCIIコードと日本語をともに16ビットにする際のことです。
Shift_JISはJISコードを基に1バイトJISを2バイトにする形がとられました。しかしEUCはASCII+日本語2バイトコードで作られたからです。またUTF-8は世界標準の文字集合Unicodeから作られています。
一度できてしまったこれらのコード、それぞれ使われている機器がある限りなくなることはないでしょう。それぞれのOSがサポートする文字コードがあるのは否めませんが、これからの1本化へと進むことを願いたいところです。