文字コードと文字化けとは

広告

文字コートというのは文字とその文字に対して 1 対 1 で対応しているコード(数字)のことです。またそれぞれの文字にどのコードを割り当てるのかは色々な種類があり、その種類のことを文字コードと呼ぶこともあります。 HTML 文書を作成して保存するとき、どの文字コードを使って保存するのかを指定する必要がありますが、その文書をブラウザで開いた時に使われている文字コードを間違えて識別してしまうといわゆる文字化けという状態になります。ここでは文字コードと文字化けに関して解説します。

文字コードと文字化けについて

コンピュータの世界ではすべてのデータは 1 と 0 の値に置き換えられて保存されます。文字や記号が含まれる文書をファイルに保存するときも、それぞれの文字はいったん数値に置き換えなければなりません。その為、文字とコードの対応表が作成され、その対応表にそって文字や記号が数値に置き換えられて保存されます。この対応表が文字コードです。

文字コードは複数の種類があるのですが、例えば ASCII という文字コードでは A という文字は 65 、 B という文字は 66 のように定義されています。文字コードとして ASCII を使っていることが分かっていれば文字からコードに変換することも、そしてコードから文字に変換することもできます。

文字コードの種類

文字コードが 1 つだけであれば問題ないのですが、例えば先ほどの ASCII という文字コードには海外で定義されたもののため、アルファベットや記号に対応するコードしか定義されておらず、日本で使われている日本語に対応するコードが定義されていません。そこで日本語にも対応した文字コードが用意されました。

日本語にも対応した文字コードとして、主に Windows で使用された Shift_JIS 、主に UNIX 系で使用された EUC_JP などがあります。また海外でも ASCII にヨーロッパで使用される文字を追加した Latin-1 など複数の文字コードが使用されるようになりました。

文字コードはそれぞれ文字と対応しているコードの一覧が異なります。また対応している文字の一覧も異なります。

Unicode

世界中の国で使われている文字の総数は膨大な数ですが、そのすべての文字を 1 つの文字コードで対応させようとしたのが Unicode という文字コードです。すべての国で同じ文字コードを使用することができます。

Unicode でも文字をどのようにコードにするのかによって UTF-16 や UTF-32 などいくつかの種類が用意されていますが、現在主に使わているのが UTF-8 という文字コードです。プログラミング言語やデータベースなどデフォルトで使用される文字コードが UTF-8 というものが増えています。

例えば Windows に標準で付属しているメモ帳という簡易的なテキストエディタでも、従来から使用されている ANSI(日本の環境では Shift_JIS ) の他に、文字コードとして UTF-8 を使って保存することができるようになりました。(以前は UTF-8 でも BOM 付きという少し異なったものですが、 2019年6月 現在では BOM 無しの UTF-8 で保存されます)。

文字コードと文字化けについて(1)

文字化けについて

HTML を使って Web ページを作成する場合、作成した HTML 文書がどんな文字コードを使って保存されたのかを文書の中で次のように記述する必要があります。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<h1>USJへ行ってきました。</h1>

<p>
6月に入りそろそろ梅雨入りしそうな時期。幸いにも天気のいい日曜日に大阪のユニバーサルスタジオへ遊びに行ってきました。
</p>
</body>
</html>

上記では文字コードとして UTF-8 を使っていると記述しているのですが、実際には HTML 文書を文字コード Shift_JIS で保存したとします。

この HTML 文書をブラウザで表示してみます。

文字コードと文字化けについて(2)

文字が何が書いてあるか分からない状態で表示されました。この状態を文字化けといいます。

字化けが発生した原因は、保存されたファイルが Shift_JIS の文字コードを使って保存されているのに、 HTML 文書の中でこのファイルの文字コードは UTF-8 と書かれているため、 Shift_JIS の変換表を使ってコードに変換されたものを、今度は UTF-8 の変換表を使って文字に戻したためです。このように保存される時に使用した文字コードとは異なる文字コードで元に戻そうとしたときに文字化けは発生します。

文字化けを直すには、今回の場合であれば HTML 文書の中で記述されている使用している文字コードの記述を、実際にファイルを保存した時に使用した Shift_JIS に修正するか、または HTML 文書の中で記述されている使用している文字コードを使ってファイルを UTF-8 を使って保存し直すかのどちらかです。今回は HTML 文書の方を修正してみます。

<!DOCTYPE html>
<html>
<head>
<meta charset="Shift_JIS">
</head>
<body>
<h1>USJへ行ってきました。</h1>

<p>
6月に入りそろそろ梅雨入りしそうな時期。幸いにも天気のいい日曜日に大阪のユニバーサルスタジオへ遊びに行ってきました。
</p>
</body>
</html>

文書を修正したら保存を行い、その後で改めてブラウザで HTML 文書を表示してみます。

文字コードと文字化けについて(3)

Shift_JIS を使って保存した文書を、 Shift_JISを使って文字に戻して表示したため文書は正常に表示されました。

-- --

文字コードと文字化けについて解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。