- ベストアンサー
CGIで作ったHTMLの文字化けについて
CGIのヘッダを "Content-type: text/html\n\n" として、HTMLをブラウザに出力するcgiを作っているのですが、 「表示」という文字が「侮ヲ」と文字化けしてしまいます。 HTMLの<head></head>内には print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=shift-jis\">"; と記述して日本語を指定しています。 文字化けの原因がまったくわかりません。 心当たりありませんでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
シフトJISの場合、「表\示」としないと文字化けしますね。 EUCで書くと化けないので楽かと思います。 http://www.kent-web.com/pubc/jcode/ が、参考になると思います。
その他の回答 (2)
- FM-8
- ベストアンサー率39% (65/164)
あまりくわしく調べてませんので, 間違ってたらご容赦を. 文字コードというのは,大きくは シフトJIS EUC を見分けるためのものです. 「表示」が化ける場合というのは,ほかにもあります. エスケープシーケンスといいまして, 「\」コードの問題かもしれません. 「表」という感じには,半角の「\」のコードが含まれているのです.Cのコンパイラでは,「\」のコードは特別の意味があり,文字列として「表」を与えたつもりでも,エスケープシーケンスとして処理されている可能性もあります. つまりですね,まずは,CGIの出力しているというHTMLソースコード を普通にテキストエディタで見ることが出来ますか? というを一度確認されてはいかがでしょうか. HTMLの問題なのか,「エスケープシーケンス」の問題なのかを切り分けてみては. 例えば秀丸エディタでは,EUCコードとS-JISコードを 自動判別して,ただしく表示してくれます. また,S-JISコードなら,たいていのwindows付属のエディタでただしく表示されるはずです.
お礼
回答ありがとうございます。 エスケープシーケンスが含まれていると上手く表示されないんですね。 まず問題を振り分けてみなければいけないのですね。
- 918BG
- ベストアンサー率48% (476/984)
charset=shift_jis と、アンダースコア(アンダーバー)を使う必要があるという事かな? 外してたらご容赦下さい。
お礼
回答ありがとうございます ほんとだ・・ アンダーバーにするべきですね 気づきませんでした
お礼
回答ありがとうございます。 指定されたURL拝見しました。 参考になりました。 「表\示」という記述で問題は解決しました。 的確な回答ありがとうございました。