mail2entry、表示部で文字化けしてました

pingの問題を追求してたら、関係ないところのバグを見付けました。

useがいっぱいあるところのすぐ下のこの文を、

print "Content-type: text/html; charset=$to_jcode?n?n";

下のように変えないと、ブラウザからmail2entry.cgiを直接実行した場合に文字化けして表示されてしまうことがありました。エントリー自体はちゃんとされますが、気持ち悪いので修正。

my %printJcode = ( "euc" => "EUC-JP", "sjis" => "SHIFT_JIS", "jis" => "ISO-2022-JP",
"ucs2" => "UCS2", "utf8" => "UTF8");

print "Content-type: text/html; charset=$printJcode{$to_jcode}?n?n";

・・・UCS2って何?(汗)

2003/9/23追加:
"utf8" => "UTF-8" (ハイフンが入る)が正しいです。板屋かえでさんありがとうございました。

コメント

板屋かえで さんの投稿…
こんばんわ、おはようございます(笑)
えっとですね、UTF8な覚え書きですが、文字化けが気になっていたので、このコメントの内容で試してみます。
実は自分の場合、以下のように変更してました。
1. HTML記述部に以下を挿入
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
→no-cacheのmetaタグは、ブラウザキャッシュを呼び出してCGIが正しく動作せずに、前回の結果のみ呼び出して表示することがないようにするための対処・・・のつもり。
2. HTMLタグが閉じてない
</BODY>
<HTML>
 となっていたのを、
</BODY>
</HTML>
に修正。
→閉じていなくても表示は出来ますけど、開いたら閉じないと、って思ったので(笑)
3. メーラーが自動改行した位置を確認するために・・・
comment: <pre>$comment</pre>
→PREタグをつけることで、改行位置が反映されて表示されます。
というわけで、多分ですが、本件
> utf8" => "UTF8"
という部分は「utf8" => "UTF-8"」ってしないとだめかもですね。
後ほど試してみます。
あと、一点気になったのが「フォルダの作成」などの作業をする前にPOPログインしちゃってますよね?これ、諸作業の後に回したほうが、複数ユーザーで作業する場合には、POP LOCK BUSYなどで処理が中断する可能性が少なくなるかもです。
寝起きで頭回ってません(笑) 
osho さんの投稿…
あはは、見事にタグ閉じてないですね。なんで今まで気づかなかったんだろう。こちらでも直しておきます。(つか直さなきゃいけないっすね)
UTF-8が正しかったんですね。実験サイトはutfなんですが、化けなかったので気が付きませんでした。自動判別の賢くないMacのSafariでチェックしてるんですが、ブラウザ側で表記の揺れに対応してくれてたのかな・・・?
フォルダの作成などの位置については、開発の基本スタンスが影響しています。動作の前提条件として、mail2entryは常に一つしか実行されない、と勝手に決めちゃっています。複数ユーザーでの利用の場合も、index.cgiやcronによる自動実行で実現できると考えています。
で、その場合に、一回の動作時間をなるべく短くしたいと考えたものですから、メールが無いときは極力何もしないようにコーディングしています。動作時間が長いと、index.cgiを使った自動実行の場合は、ページが表示されるまでの「間」が長くなってしまうものですから。
でも普通はログインしてる時間を減らすコーディングをしますよね。世間に逆らっている気がしてきた(汗)このままだと思いもよらない影響が出ちゃったりして。どうしようかなぁ・・・
PREタグはまったく思いつきませんでした。HTMLに弱いです。導入させて頂きます。
いろいろご指摘ありがとうございます。大変助かります。これからもよろしくお願いします!

このブログの人気の投稿

トランシーバーアプリzelloにオススメの片耳イヤホンマイク

車を運転しながらメモを取る。取れない。

買っちゃった ASUSのスティックPC VivoStick TS10