サイト作りのプロにとっては当たり前のことかも知れないが・・・。
買い物かごをUTF-8で書いたけれど、IEで見ようとすると何故か白紙!?
普段はmozilla系のブラウザを使っているので、こんなことになっているとは全く気づきませんでした。
ブラウザの文字エンコーディングを「UTF-8」に変更すると一応表示できるが、IEのバージョンによってはうまくいかない様子。
これじゃお客さんにとって迷惑この上ないが、とりあえず放置(ダメじゃん)していました。
さんざん悩んだけれど、ネットで調べると簡単に解決策が見つかりました♪
同じ事で困る方も多いようです。
最初のつまずきは<META>タグの位置
見た目でこっちがいいかなと思い、何気なく書いたコード。
これもまた、引っかかる元でした。
<TITLE>~</TITLE>等で文字出力をする前に
<META http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ />
の記述をしないとうまく文字エンコーディングを識別してくれないブラウザがあるということを知った。
順番って大事なんですね。
HTTPヘッダーも!?
<META>タグで指定しているから大丈夫と思いきや、HTTPヘッダーの中に文字エンコーディングを指定しなといけないブラウザもどうやらあるらしい。
こちらはphpの先頭に
header(‘Content-Type: text/html; charset=UTF-8’);
と記述しておくと良い模様です。
ここで大事なことは「文字出力をする前に文字エンコーディングを知らせる」ということ。
改行にせよ、スペースにせよ、何かが送り出されてしまうとheader()は意味を持たないようです。
これで良いのかな? |
<?php header('Content-Type: text/html; charset=UTF-8'); ?> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <TITLE>~~~</TITLE> </HEAD> <BODY> ~~~~~ ~~~~~ </BODY> </HTML> |