- 締切済み
フォームから入力した漢字が文字化けに
アンケートを作成しました. 入力フォームに漢字(名前など)を入力して送信すると内容がメールで受け取れます.入力フォームは確認画面が表示できるようにしてありその後,送信でメールを受け取ります.確認画面表示は問題なく2バイト文字は表示されています.そのhtmlファイルの記述に下記設定をしています. <META HTTP-EQUIV='Content-Type' CONTENT='text/html;CHARSET=Shift_JIS'> CHARSET=Shift_JISの部分の指定をいろいろ替えました変化ありません. なにかこのようなことで知ってる方教えてください. また文字コードの制御,フォームとCGIのデータのやりとりなどがわかるサイトや書籍を知ってましたら併せて教えてくださるとありがたいです. よろしくお願いします.
- みんなの回答 (5)
- 専門家の回答
みんなの回答
確認フォームで文字化けせず、メール内容が化けるのであれば、データは正しくShift-JISに変換されているようですね。sendmail(?)するときにuuencodeされてしまっているのかも知れません。このURLに説明があります。
- duckling
- ベストアンサー率47% (88/185)
確認画面が問題ないのであれば、 確認画面を「プリントした後」、 $mailbody に、 メール本文が格納されているとしたら、 &jcode'convert(*mailbody,'jis'); このようにして、 メールを「送信する前」に jis にデコードすれば簡単だと思います。
お礼
ありがとうございます. 勉強不足でした. 試してみます.
- yuizuian
- ベストアンサー率42% (103/245)
補足ですが、確認画面を出すのであれば 確認画面→Shift-JIS メール送信→JIS と2回文字コードを変換すると良いですよ。
お礼
ありがとうございます. 文字コード受け渡しの時 適した形式にというやりかた試してみます.
- NINJA104
- ベストアンサー率43% (133/306)
メールは通常JISコードで送受信を行います。 ですので、フォームからシフトJISで入力させた場合は、JISコードに変換する必要があります。 またその際、メールヘッダに記述する charsetは 7bitのiso-2022-jp(←JISコード指定)です。 CGIをperlで作成した場合は、上記のコード変換に jcode.pl というコード変換ライヴラリを requireして使用するのが一般的の様です。 または nkf というコード変換ツールを利用してファイルtoファイルで一括変換したものを送信するという方法も取れます。 perlを使用する場合のテクニックとして、以下のURLの【CGIとJava】→【CGI研究室】が簡潔な解説をされています。
お礼
ありがとうございます. 参考にさせて頂きます. >メールヘッダに記述する charsetは 7bitのiso-2022-jp これは試しましたが変わりませんでした.
文字化けしているのは確認フォームですよね。フォームで入力された文字はEUCになりますのでjcode.pl等を使ってShift_JISへデコードする必要があります。以下のURLがわかりやすいと思います。
お礼
ありがとうございます. 文字化けしてるのはメール文です. 確認フォームの表示は問題なく表示されています.
お礼
ありがとうございます. こちらも試してみます.