• 締切済み

フォームから入力した漢字が文字化けに

アンケートを作成しました. 入力フォームに漢字(名前など)を入力して送信すると内容がメールで受け取れます.入力フォームは確認画面が表示できるようにしてありその後,送信でメールを受け取ります.確認画面表示は問題なく2バイト文字は表示されています.そのhtmlファイルの記述に下記設定をしています. <META HTTP-EQUIV='Content-Type' CONTENT='text/html;CHARSET=Shift_JIS'> CHARSET=Shift_JISの部分の指定をいろいろ替えました変化ありません. なにかこのようなことで知ってる方教えてください. また文字コードの制御,フォームとCGIのデータのやりとりなどがわかるサイトや書籍を知ってましたら併せて教えてくださるとありがたいです. よろしくお願いします.

  • CGI
  • 回答数5
  • ありがとう数5

みんなの回答

noname#225520
noname#225520
回答No.5

確認フォームで文字化けせず、メール内容が化けるのであれば、データは正しくShift-JISに変換されているようですね。sendmail(?)するときにuuencodeされてしまっているのかも知れません。このURLに説明があります。

参考URL:
http://tohoho.wakusei.ne.jp/wwwmail1.htm
eijikun
質問者

お礼

ありがとうございます. こちらも試してみます.

  • duckling
  • ベストアンサー率47% (88/185)
回答No.4

確認画面が問題ないのであれば、 確認画面を「プリントした後」、 $mailbody に、 メール本文が格納されているとしたら、 &jcode'convert(*mailbody,'jis'); このようにして、 メールを「送信する前」に jis にデコードすれば簡単だと思います。

eijikun
質問者

お礼

ありがとうございます. 勉強不足でした. 試してみます.

  • yuizuian
  • ベストアンサー率42% (103/245)
回答No.3

補足ですが、確認画面を出すのであれば 確認画面→Shift-JIS メール送信→JIS と2回文字コードを変換すると良いですよ。

eijikun
質問者

お礼

ありがとうございます. 文字コード受け渡しの時 適した形式にというやりかた試してみます.

  • NINJA104
  • ベストアンサー率43% (133/306)
回答No.2

メールは通常JISコードで送受信を行います。 ですので、フォームからシフトJISで入力させた場合は、JISコードに変換する必要があります。 またその際、メールヘッダに記述する charsetは 7bitのiso-2022-jp(←JISコード指定)です。 CGIをperlで作成した場合は、上記のコード変換に jcode.pl というコード変換ライヴラリを requireして使用するのが一般的の様です。 または nkf というコード変換ツールを利用してファイルtoファイルで一括変換したものを送信するという方法も取れます。 perlを使用する場合のテクニックとして、以下のURLの【CGIとJava】→【CGI研究室】が簡潔な解説をされています。

参考URL:
http://www2.inforyoma.or.jp/~terra/
eijikun
質問者

お礼

ありがとうございます. 参考にさせて頂きます. >メールヘッダに記述する charsetは 7bitのiso-2022-jp これは試しましたが変わりませんでした.

noname#225520
noname#225520
回答No.1

 文字化けしているのは確認フォームですよね。フォームで入力された文字はEUCになりますのでjcode.pl等を使ってShift_JISへデコードする必要があります。以下のURLがわかりやすいと思います。

参考URL:
http://tohoho.wakusei.ne.jp/wwwmail1.htm
eijikun
質問者

お礼

ありがとうございます. 文字化けしてるのはメール文です. 確認フォームの表示は問題なく表示されています.

関連するQ&A

  • 文字化け

    HPを少しずつ作っているのですが、少しだけできたのでyahooのところにアップしてみました。しかし文字化けしてしまいました(涙) <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=Shift_JIS"> このタグが関係あるのでしょうか? IE6

  • docomoとsoftbankで確認画面が文字化けしてしまいます。

    このカテゴリーで良いのか迷ったのですが、宜しくお願いします。 携帯サイトをつくっておりまして、 SSLのフォームをつくってみたのですが 入力を終えて、確認ボタンをクリックし 確認画面へ移ると、docomoとsoftbankで文字化けを起こしてしまいます。(auはOKでした) dreamweaverCS3を使用しており、エンコーディングもShift_JISへ変更しております。 因に、下記のmeta表記にしましたところ、docomoとsoftbankで文字化けはございませんでしたが、 auでは確認画面どころか、入力フォームのページまで文字化けしてしまいました。 <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <meta http-equiv="Content-Style-Type" content="text/css"> 何が原因なのでしょうか...。 どなたかお分かりになる方、お助け下さい。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <body> <form method="post" action="/​www.​△△△△△.jp/freecgi/○○○○○/index.cgi"> <!-- ============================== 各種設定 ============================== --> <!-- システム設定--> <input type="hidden" name="_profile_" value="XXXXXXXX"> <!-- 共通設定 (確認画面/完了画面) --> <input type="hidden" name="_css_url_" value="/​www.​△△△△△.jp/○○○○○/○○○○○/default.css"> default.cssの最初には @charset "Shift_JIS";と表記しております。

  • メールフォームで文字化けが出る

    http://okwave.jp/qa5038084.htmlの引き続きです。(メールフォーム) <meta http-equiv="Content-Type" content="text/html;charset=shift_jis"> &jcode'h2z_sjis(*contenido) &jcode'convert(*subject,'sjis'); &jcode'convert(*infor,'sjis'); &jcode'convert(*contenido,'jis'); &jcode'convert(*res_msg,'jis'); print "Content-type: text/html;charset=shift_jis\n\n"; ↓ sjis関連をutf8に書き換え、jcodeの頭文字をJに書き換え <meta http-equiv="Content-Type" content="text/html;charset=utf8"> &Jcode'h2z_utf8(*contenido) &Jcode'convert(*subject,'utf8'); &Jcode'convert(*infor,'utf8'); &Jcode'convert(*contenido,'utf8'); &Jcode'convert(*res_msg,'utf8'); print "Content-type: text/html;charset=shift_utf8\n\n"; require 'jcode.pl'をuse Jcode;に書き換え ※jcode::" となっている箇所はありません 結果 メールフォームはエラーや文字化けは出なくて成功しましたが、メール受信の際、ThunderbirdPortableメーラーでは全て文字化け(文字エンコーディングは「日本語ISO-2022jp」となっています)、ウェブメールのgmailでは内容は文字化けになっていませんが、タイトルが文字化けになっています。 どこが悪かったのでしょうか? 宜しくお願いします。

    • 締切済み
    • CGI
  • 文字コード変更による、文字化け・レイアウト崩れ

    文字コードをShift-jisからEUC-JPに変更したいのですが、 HTML・CSSに処理を施したら文字・レイアウトが大幅に崩れてしまいました。 以下のように変更したのですがやり方に間違いはないでしょうか? [HTML] <meta http-equiv="Content-Type" content="text/html; charset=Shift-jis"> ↓↓ <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> [CSS] @charset "shift_jis"; ↓↓ @charset "euc-jp"; また、ブラウザの表示⇒エンコードで(Shift_jis)を選択すると今までどおり正常に表示されます。(HTMLとCSSにはeuc-jpの記述にも関わらずです) これは文字コード変更したと思い込んでしまっているのでしょうか? 解決策お願いします。 あまり知識がありませんので、分かり易く教えていただけるとありがたいです。 ちなみにエディタはHTML Project2を使用しています。

  • 文字化けを解決したい

    サイトを持つ管理人です。タグなどについてはかなり初心者です。 iPhoneなどの海外OSから閲覧すると文字化けしてしまうという報告を受けて、タグを色々いじっています。 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">を追加してみたのですが、これ単品だと私のPCから閲覧したときに文字化けしてしまいました。 そのため<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">と<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">を並べてみたのですが、これで海外OSからも文字化けを起こさなくなったのでしょうか? こんな感じのタグです↓ <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META NAME="GOOGLEBOT" CONTENT="NOINDEX, NOFOLLOW,NOARCHIVE"> <META NAME="ROBOTS" CONTENT="NOARCHIVE,NOINDEX,NOFOLLOW"> <meta name="viewport" content="width=380, maximum-scale=1.6" /> <title>練習</title> </head> 全てのスマホからもサイトを閲覧出来るようにするにはどうしたら良いでしょうか?それとも、全てのスマホから文字化けを防ぐことは不可能なのでしょうか? お知恵をお貸しください。

  • 文字化け

    entry.html entry-kakunin.php(確認画面) entry-send.php(送信画面) <meta http-equiv="Content-Type" content="text/html; charset=shift_jis" /> 上のような形でエントリーフォームを作成して、自分でテストする分にはまったく問題はなかったのですが、いざ本当のエントリーがあった際に、下記のように入力部分だけ文字化けしたものがメールで届きました。 詳しくないため原因がわからず困っています。 考えられることってありますか? また解決方法を教えていただけますか? 【性別】 男性 ←これはラジオボタンで選択 【生年月日】 tmDgZHZd 年 月 kqNBQjyNmQiYeOaVyM 日 【自己PR・取得資格等】 JkCmSE <a href=

    • 締切済み
    • PHP
  • HTMLの文字化け

    自分で立ち上げたサーバへWindoswで作成したHTMLをアップしてブラウザから表示の確認をしてみたところ、日本語が文字化けてしまいました。 ヘッダーには <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> として、文字コードをUTF-8にしてあるのですが、この部分を <meta http-equiv="Content-Type" content="text/html; charset=Shift-JIS" /> とShift-JISにしてみると、日本語の文字化けが解消します。 できればcharset=UTF-8の状態で文字化けせずに表示してくれるようにしたいのですが・・・ どなたか原因がお分かりになる方いらっしゃいましたら、ご教授のほどお願い致します。 テキストエディタはK2Editorを使用しており、「保存時の文字コードと改行種類の変更」でHTMLファイル自体の文字コードは「Shift-JIS」、改行コードは「CRLF」としております。 サーバは、CentOS5.4を使用しており、 コマンドで # printenv | grep LANG の結果は、 LANG=ja_JP.UTF-8 となっております。

    • ベストアンサー
    • HTML
  • 文字化け

    携帯用サイトを作成中です。 PCでの観覧は問題ないのですが 私自身の携帯から観覧すると全て文字化けになってしまいます。 色々調べて下記のタグを入れる等しましたが 今度はPCからの観覧も文字化けしてしまいました。 <META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS"> サーバー:ロリポップ 原因と改善策を教えて下さい。 お願い致します。

  • ビルダーでの文字化け。

    ホームページビルダー6.5でHP作成中です。以前はFrontPageで作っていて、それをビルダーで色や文字などをちょっと変えて保存してアップしました。そしたら文字化けするようになってしまいました。 <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META name="GENERATOR" content="IBM WebSphere Studio Homepage Builder Version 6.5.0.0 for Windows"> <META http-equiv="Content-Style-Type" content="text/css"> ここが何か間違った記述になっていますか?FrontPageの時には一番上の<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">がなかったようです。これが原因でしょうか? それと二行目の<META name="GENERATOR" content="IBM WebSphere Studio Homepage Builder Version 6.5.0.0 for Windows">は消すことはできないでしょうか? よろしくお願いします。

  • bloggerで文字化け

    blogger(http://www.blogger.com/)のテンプレートに日本語を書くと文字化けします。 対応策はありますか? 以下の二つは書いています。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD// HTML 4.0 TRANSITIONAL//JP"> <META HTTP-EQUIV="Content-Type" CONTENT=Text/HTML; Charset=Shift_JIS>

専門家に質問してみよう