meta

metaタグは、いろいろなメタ情報を付加する。

<meta> - メタ - とほほのWWW入門

よく見かけるのは、Content-typeとcharsetの部分。

<html>
  <head>
    <title>meta</title>
  </head>
  <body>
    あいうえお
  </body>
</html>

まず、これを、

UTF-8で保存
UTF-8で保存

UTF-8で保存。

当然、文字化けはせず、表示できる。
当然、文字化けはせず、表示できる。

当然、文字化けはせず、表示できる。

Shift_JISで保存
Shift_JISで保存

Shift_JISで保存。

文字化けする
文字化けする

文字化けする。

metaでcharsetにShit_JIS
metaでcharsetにShit_JIS

metaでcharsetにShit_JIS。

あれ?これで治らない・・・。
あれ?これで治らない・・・。

あれ?これで治らない・・・。

metaがheadの中なのでbodyには効かないのかと思ってtitleを日本語にした
metaがheadの中なのでbodyには効かないのかと思ってtitleを日本語にした

metaがheadの中なのでbodyには効かないのかと思ってtitleを日本語にした。

関係なかった
関係なかった

関係なかった。

W3C I18n Checker

これでリクエスト情報を調べると、

metaのcharsetがShift_JISなのに、Content-TypeがUTF-8になっている。
metaのcharsetがShift_JISなのに、Content-TypeがUTF-8になっている。

metaのcharsetがShift_JISなのに、Content-TypeがUTF-8になっている。

HTTPヘッダのメタ情報

結局は、Apacheの設定か。

httpd.confの末尾にこれを追加
httpd.confの末尾にこれを追加

httpd.confの末尾にこれを追加。

これShift-JISですが表示出来てます。
これShift-JISですが表示出来てます。

これShift-JISですが表示出来てます。
CGIPHPなら、HTTPヘッダを変えて、そちらで表示できるかもだけど、metaタグでは厳しい。
さっきのApacheの設定変更を元に戻して、

utf8に戻したバージョン。

utf8で保存
utf8で保存

utf8で保存。

utf8で表示
utf8で表示

utf8で表示。
一応metaタグでの文字コード指定もつけておいたほうがいいけど、サーバと文字コード合わせないとね。

という感じで終わろうとおもっていたが、もうちょっと探ったら、

ここでUTF-8と定義しているのがみつかったので
ここでUTF-8と定義しているのがみつかったので

ここでUTF-8と定義しているのがみつかったので、

コメントアウトして改めていじってみる
コメントアウトして改めていじってみる

コメントアウトして改めていじってみる。

両方ともUTF-8
両方ともUTF-8

両方ともUTF-8

表示できる
表示できる

表示できる。

ファイルエンコードをShift_JISにする
ファイルエンコードShift_JISにする

ファイルエンコードShift_JISにする。

文字化け
文字化け

文字化け。

両方Shift_JIS
両方Shift_JIS

両方Shift_JIS

表示できる
表示できる

表示できる。

ファイルエンコードをUTF-8にする
ファイルエンコードUTF-8にする

ファイルエンコードUTF-8にする。

文字化け
文字化け

文字化け。
というわけで、AddDefaultCharsetがコメントアウトされていれば、metaタグのCharsetでレスポンス返ってくるので、metaタグのcharsetをソースコードエンコード形式と合わせると表示される。

Sample/html/meta/meta/src/meta at master · bg1bgst333/Sample · GitHub