HTML の文字コード指定 ~ ちょっとした違いに注意

「アメリカで働く・・・」 と、どうしても意識しなければならないのは、プログラムの日本語対応についてです。

アメリカの人たちは、当然みんな英語 OS を使ってます。うっかりすると、すぐに文字化けしてしまいます。 たとえ OS に日本語が入っていて本来 「化け」 なくてもいい場合でも、単に表示できないこともしばしばです。

簡単な例はこんなです。

HTML を書く場合、ちゃんと Content-Type の META タグを書いてないと、ブラウザは文字コードの判定に失敗して 文字化けして表示されるか、真っ白な画面が表示されるだけになります。

Content-Type を書くときは、head の一番最初に書いておかないとダメです。

つまり、


<html>
<head>
<title>ページタイトル</title>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">

... (省略)...

と、書くのではなく、次のように書きます。


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">

<title>ページタイトル</title>
... (省略)...


Content-Type は 一番最初に書かないとダメです。

最初に title タグが書いてあると、ブラウザは先にそれを読みます。 その時に、ブラウザの文字コード自動判定ロジックが走ってしまい (でそれが判定に失敗するのが常)、 結局 meta タグは役に立ちません。

ですから、ブラウザの文字コード判定ロジックが走る前に、ブラウザに 「このページは EUC-JP で書いてますよ!」 とか 「UTF-8 ですよ!」と教えてあげないといけないのです。

(※) こういうのは本来、HTML ではなく HTTP のヘッダーでブラウザに教えてあげるのが良いです。ただし、たとえ HTTP ヘッダで教えてあげたとしても、head タグ内に Content-Type は書いておいたほうが良いと思います。とにかく化けたら読めませんので、ブラウザにしっかり文字コードを教えてあげた方がよいですからね。

Web サイトを作る方はお気をつけください。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Web/DB プログラミング徹底解説