文字化けしたアンケートの解読


自分のホームページに「アンケート」のコーナーを作り、訪れた人に記入して送信してもらう場合、 普通はCGIを利用しますが、CGIの助けを借りなくても「アンケート」を作ることはできます。

つまり、必要に応じて文字入力欄やチェックボックス、ラジオボタンなどの設定されたフォームを作り、フォームの最後に送信用のボタン <INPUT TYPE="submit"> を付けるという方法はCGIを使う場合と共通ですが、FORM の ACTION にCGIのアドレスではなく、自分のメールアドレスを指定するという方法です。

例えば

<FORM method="post" action="mailto:ッsupport@umechando.com">
感想、待ってるぜ!
<TEXTAREA name="Comment"></TEXTAREA><BR>
<INPUT type="submit" value="送信">
</FORM>

こんな感じです。

ただこの方法で、訪れた人からうまくメールが送られてきたとしても、メール本文の日本語の部分は文字化けしているはずです。例えばこんな感じ。

name=%91%BE%98Y%95%BA%89q%0D%0A
age=%82R%82O%91%E3%0D%0A
comment=%82%C6%82%C4%82%E0%96%F0%82%C9%97%A7%82%C2%83z%81%5B%83%80%83y%81%5B%83W%82%C5%82%B7

やたらと%の多い暗号のような文ですが、これはアンケートの内容がメールに送られたとき、日本語(全角英数字も)がアスキーコードに変換されてしまうために起こります。 アスキーコードでは半角英数字以外は%と16進数の組み合わせで表され、例えば全角数字の「1」は %82P、「あ」は %82%A0、「い」は %82%A2、漢字の「脳」は %94%5D となります。

このアスキーコードをアスキー文字に変換するためのオンラインソフトも出ているようですが、もしあなたが Netscape かバージョン 3.02までの Internet Explorer をお持ちなら、実は解決策が手元にあるのと同じです。 ブラウザ以外のソフトは要りません。(Internet Explorer 4.0 以降は、文字コードを Unicode に変えたために、この方法は使えません。)

JavaScript の unescape() というメソッドを使えば、アスキーコードで表示された文を一発でアスキー文字に変換することができます。実に簡単です。 自分で関数を定義する必要すらありません。"test.html" というファイル名の自分専用の HTML ファイルを作り、<BODY>〜</BODY>内に次のように書きます。

<FORM NAME="decoder">
<TEXTAREA NAME="code" rows=10 cols=60>
</TEXTAREA><P>
<INPUT TYPE="button" VALUE="変換" onClick="document.decoder.code.value=unescape(document.decoder.code.value)">
<INPUT TYPE="reset" VALUE="クリア">
</FORM>

次のようになります。上に示した文字化けした例の name=から3行目の最後までをマウスでドラッグしてコピーし、この中に貼り付けてみて下さい。 そして「変換」ボタンを押すと、きれいに解読されるはずです。(注:Internet Explorer の場合はバージョン 3.0〜3.02 でないとうまく表示されません。新バージョンは Unicode を使用しているので、この方法では文字化けしてしまいます。)





アスキーコードに文字化けしたメールが来たら、メール本文をそっくりコピーしてこの入力欄にペーストし、「変換」ボタンを押して解読します。 (アスキーコード以外は変換されませんので、メール本文全体をそっくり貼り付けて構いません。)

CGIを使った場合でも、フォームの NAME の部分に日本語を使ったりすると(例:<TEXTAREA NAME="コメント">)、その部分が文字化けしてしまいますが、それもこの解読フォームを使えば問題解決です。

注記:今回の方法には私自身のアイデアが入っていないのでちょっと心苦しいのですが、便利なわりにあまり知られていないことなのであえて紹介しました。




次のトピックは「テキストエリアの文字数」です。

目次 | ← 前のトピック | ↑ページのトップ | 次のトピック →

ご意見・ご質問がありましたら「ザ・掲示板」またはメールにて梅ちゃん堂まで