• ベストアンサー

cgiでの文字化け

<TD bgcolor="#ffffff" align="center">¥36000<BR>個数 <SELECT name="商品名:白雲"> <OPTION value="" selected>--</OPTION> <OPTION value="1"> 1</OPTION> <OPTION value="2"> 2</OPTION> </SELECT></TD> 上記記述がHTML内にあるのですが、これをmail.cgiを使って送信すると 確認画面や送信されたメールで文字化けをしてしまいます。 文字化けするのは「雲」という文字で、雲の文字を空などにしても文字化けしません。 他の項目もあるのですが、こちらも文字化けしません。 ちなみに、textエリア内に書き込まれた雲と言う文字も文字化けしません。 なぜ、雲という文字だけ文字化けしてしまうのでしょうか? どうにかして雲を表示させる方法はありますか?

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

質問者が選んだベストアンサー

  • ベストアンサー
  • Yeti21
  • ベストアンサー率47% (396/830)
回答No.4

今更ですが、他のエディタでも便利なものは色々有りますがTeraPadなどを使用すると、 任意の文字コードで開けるのはもちろん、開いた文書をEUCやSJIS他色々な 文字コードに変換したり、改行コードも指定して保存することも可能です。 これを使えば入力しなおさなくても良かったかと思い、今後役立つかもしれませんので 一応、紹介させていただきました。 http://www.vector.co.jp/soft/win95/writing/se104390.html

その他の回答 (4)

  • qtea
  • ベストアンサー率77% (38/49)
回答No.5

>print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n"; >をprint MAIL "Content-type: text/plain; charset=euc-jp\n"; >にしたら文字化けも治りました。 >これで問題ないのかな? 微妙に問題があるような… 昔のインターネットのメールは、文字データは、7bitで送信していました。(今はどうなのか知らないですが) この為、メール送信に使用する文字コードは、7bitで日本語を表わせるJISコードが使われています。(半角カナがNGなのはこのせい) ということは、8bit使用している、シフトJISやEUCだと、昔の仕組みを使用しているサーバーを通ったときに、文字ばけしてしまいます。 また、日本語はJISコードでくるだろ!と決めうちしているメーラーが存在するかもしれない(ないと思うけど)ので、その手のメーラで受けとったら、文字化けしまくるでしょう。 という問題があると思うので、メールの送信内容は、もう一度、JISコードに変換してあげてから、送ったほうが、良いと思います。 とりあえず、適当に検索したものですが、参考にしてみてください。 http://www.watch.impress.co.jp/Internet/www/article/980525/mojibake.htm http://www.atmarkit.co.jp/fwin2k/win2ktips/711mailchar/mailchar.html http://tech.bayashi.net/pdmemo/sendmailbyperl.html

  • Yeti21
  • ベストアンサー率47% (396/830)
回答No.3

No.1ですが、補足しておきます。 先に書いた、文字コードのエンコードの問題であれば、現状で化けたときに、IE等の ブラウザで文字のエンコードの選択ができると思いますので、そこで自動選択や、 日本語(~)のどれかを選択して文字化けが解消するようであれば、やはり、 HTMLの出力で明示するか、或いは、SJISからEUCに変更するなどで解決する 可能性が高いです。 まず、確認してみてください。

Hiro-PaPa
質問者

お礼

質問する前に、自分でも検索してHTMLとCGIはEUCに変えましたが出来ませんでした。 CGI内を初めから目を通していたら、&jcode'convert(*name,'sjis');というのがあり、 そこをEUCに変えたら文字化け治りました。 ただ、他が文字化けしてしまいましたけど。。。 でも、CGIはEmEditorで編集していたのですが、S-JISで編集しておりました。 これをEUCで読み直すことによりCGI内の日本語が全て文字化けし、その文字化けした文字をを入力しなおすことにより解決できました。 ありがとうございました。

  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.2

 漢字コードには、メーカーや研究機関などの思惑や利権などの関係から、いくつもの種類が制定されてしまいました。  現在ではUTFと呼ばれる「Unicode」が主流になりつつありますが、WindowsやMac系は「Shift-JIS」、UNIX系は「EUC」、IBM系メインフレームは「EBCDIC(EBCDIK)」というコードで発展してきました。  それらには一部コードを「改行」など特殊な用途に割り当てられるコードもあり、そういうコードを、他のコード系では文字に割り当てていたりしますので、文字化けなどの現象に悩まされることになります。  サーバが何かはわかりませんが、ANo.1さんの解答通りホームページのコードはしっかり設定するのが前提条件です。 できれば、Perlなどの言語で処理加工を行うのであればCGI及びフォーム共、EUCで統一するのが望ましいと思います。  メールに関しても基本的には7ビットコードしか送れない仕組みになっていますので、漢字は「JIS」コード(Shift-JISではありません)に変換して送信する必要があります(用件やあて先などの漢字はさらにMIMEエンコードしてやる必要があります)。  「雲」に限らず「Shift-JIS」では状況に応じてほぼ化ける覚悟で作ってください。

Hiro-PaPa
質問者

お礼

#3さんへのお礼にも書かせていただきましたが、無事解決しました。 追記すると、メール本文は問題なかったのですが、メールタイトルが文字化けしてしまいましたが、 print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n"; をprint MAIL "Content-type: text/plain; charset=euc-jp\n"; にしたら文字化けも治りました。 これで問題ないのかな?

  • Yeti21
  • ベストアンサー率47% (396/830)
回答No.1

文字コードはEUCでしょうか?SJISでしょうか? 書き出すhtmlに明示しているでしょうか?していなければ下記のように明示すると どうなるでしょうか? <META HTTP-EQUIV="Content-type" CONTENT="text/html;charset=EUC-JP"> とか <META HTTP-EQUIV="Content-type" CONTENT="text/html;charset=Shift_JIS">

関連するQ&A

  • 文字化けで困っています。

    文字化けで困っています。 下記のJSPからrequest.getParameterで他のJSPに取得させようとしているのですが、文字化けが起こってしまいます。どなたか、考えられる原因をご教授お願い致します。(eclipse 3.5) <%@page contentType="text/html; charset=Shift-JIS"%> <html:form action="/**/***"> <select name="color_name" > <option value="赤" selected>赤</option> <OPTION value="青">青</option> <OPTION value="黄">黄</option> <OPTION value="緑">緑</option> </select></TD> </html:form> -------------------------------------------------------- <%@page contentType="text/html; charset=Shift-JIS"%> <%=request.getParameter("color_name") %>

    • ベストアンサー
    • Java
  • プルダウンで選択したCGIを動かしたい(ACTION=""をプルダウンで変更するには?)

    プルダウンで選択したCGIを動かしたい(ACTION=""をプルダウンで変更するには?) 以下の <option value="test1.cgi">テスト1  <option value="test2.cgi">テスト2 <option value="test3.cgi">テスト3 <option value="test4.cgi">テスト4 4つのプルダウンメニューを選択して、それぞれ別のCGIを動かすには どうしたらできますか? よかったら教えて下さい。javascriptで出来そうな気がするのですが… <FORM name="testname" method="post" ACTION="/cgi-bin/??????" > <TABLE> <TR><TD> テスト</TD> <TD bgcolor="#FFFFFF"> <SELECT name=""> <option value=""> <option value="test1.cgi">テスト1  <option value="test2.cgi">テスト2 <option value="test3.cgi">テスト3 <option value="test4.cgi">テスト4 </SELECT></TD> </TR> <TR> <TD bgcolor="#cccccc" width="150"> 開始日</TD> <TD bgcolor="#FFFFFF"> <input name="daysS" type="text" size="8"> </TD> </TR> <TR> <TD bgcolor="#cccccc" width="150"> 終了日</TD> <TD bgcolor="#FFFFFF"> <input name="daysE" type="text" size="8"> </TD> </TR> </TABLE> <BR> <INPUT type="submit"name="send"value="開始"> <INPUT type="reset" name="reset" valiu="消去"> </FORM>

  • 複数のselect値で1つも選択されていないとき、エラーを出したいのですが

    初めて投稿いたします。 宜しくお願いいたします。 postmailで注文フォームを制作中なのですが、複数の商品の個数(デフォルトでは0に設定)をselectで選択させようとしています。 例: <tr><td class="center">NO.01</td><td>あんまん</td> <td><select name="あんまん"><option selected value="">0</option> <option value="1">1</option> (~略~) <option value="9">9</option></select></td></tr> <tr> <td class="center">NO.02</td><td>にくまん</td> <td><select name="にくまん"><option selected value="">0</option> <option value="1">1</option> (~略~) <option value="9">9</option></select></td></tr> もし、すべての商品の個数が「0」に設定されている場合はエラーを出して、cgiでの送信を中止させたいのですが、どのようなjavascriptをソースに書けば良いでしょうか?  宜しくお願いいたします。

  • テーブルが崩れる問題について

    このような場合赤色の部分が17:00の真中に来るようにするにはどうしたらいいんでしょうか? <table height="15%" border="0" cellpadding="5" cellspacing="1" bgcolor="#CCCCCC"> <tr> <td height="33%">&nbsp;</td> <td colspan="2" align="center">10:00</td> <td colspan="2" align="center">11:00</td> <td colspan="2" align="center">12:00</td> <td colspan="2" align="center">13:00</td> <td colspan="2" align="center">14:00</td> <td colspan="2" align="center">15:00</td> <td colspan="2" align="center">16:00</td> <td colspan="2" align="center">17:00</td> <td colspan="2" align="center">18:00</td> <td colspan="2" align="center">19:00</td> <td colspan="2" align="center">20:00</td> </tr> <tr> <td height="33%" bgcolor="#FFFFFF">27日</td> <td bgcolor="#FFFFFF">&nbsp;</td> <td bgcolor="#FFFFFF">&nbsp;</td> <td bgcolor="#FFFFFF">&nbsp;</td> <td bgcolor="#FFFFFF">&nbsp;</td> <td bgcolor="#FFFFFF">&nbsp;</td> <td bgcolor="#FFFFFF">&nbsp;</td> <td colspan="9" bgcolor="#FF0000">&nbsp;</td> <td bgcolor="#FFFFFF">&nbsp;</td> <td bgcolor="#FFFFFF">&nbsp;</td> <td bgcolor="#FFFFFF">&nbsp;</td> <td bgcolor="#FFFFFF">&nbsp;</td> <td bgcolor="#FFFFFF">&nbsp;</td> <td bgcolor="#FFFFFF">&nbsp;</td> <td bgcolor="#FFFFFF">&nbsp;</td> </tr> </table>

    • ベストアンサー
    • HTML
  • 文字化けすると言われましたが

    自宅PC(XP)、会社PC(98)では 問題なかったのですが、XPでIE6を使用の方に 文字化けすると言われました 以下ソースです 「恋をして…」が文字化けし エンコードすれば読めるらしいのですが…。 ひょっとして、末にある <BASEFONT SIZE="2"Font Color="black"> が問題なのでしょうか? <HTML> <HEAD> <TITLE>玄関</TITLE> <meta http-equiv="refresh" content="8; url=top.html"> </HEAD> <STYLE> BODY{ scrollbar-3dlight-color:#ffffff; scrollbar-arrow-color:#ffffff; scrollbar-darkshadow-color:#ffffff; scrollbar-face-color:#ffffff; scrollbar-highlight-color:#ffffff; scrollbar-shadow-color:#ffffff; scrollbar-track-color:#ffffff;} </STYLE> <BODY bgcolor="white" text="#000000" link="#000000" vlink="#000000" alink="#000000" style="background-repeat : no-repeat;background-attachment : fixed;background-image : url;; background-position : right bottom;"> <DIV ALIGN="center"><TABLE border="0"> <BR><BR><BR><BR><BR><BR><BR><TR> <TD><BR><BR><BR>恋をして私は</TD> </TR> <TR> <TD><DIV ALIGN="rignt"><Img Src="image/back/031231.bmp" Alt="" border="0"></DIV></TD> </TR> <TR> <TD><DIV ALIGN="left"><B></B><BR><BR>                         馬鹿になった。</DIV></TD> </TR> </TABLE></DIV> <BASEFONT SIZE="2"Font Color="black"><p align="left"> <BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>       <BR></Font> </P> </BODY> </HTML>

    • ベストアンサー
    • HTML
  • PHPでフォーム作成について(初歩的質問)

    PHPに関しては超初心者のものです。 テキストで学び始めたのですが、HTMLのフォームにPHPスクリプトが組み込まれた以下のようなプログラムの時、写真のようになってうまく表示されません(当然動作しません)。 経験者の方なら、おわかりになられると思うのですが、調べてもわからず困っています。 お助けをよろしくお願いいたします。 【環境】 Windows XP, XAMPP(PHP5.3/Apache2.2・・・) 【ソース】 <?php //------------------------------------------------------- // ■ 初期値設定 //------------------------------------------------------- $kname = ""; ~ (中略) ~ ?> <hr> <b>会員登録フォーム)</b><p> <form action="<?=$_SERVER["PHP_SELF"]?>" method="POST" enctype="multipart/form-data"> <table border="1" width="600" cellspacing="0" cellpadding="0"> <?php //-------------------------------------------------- // □ 会員名 //-------------------------------------------------- ?> <tr> <td align="center" width="150" bgcolor="#b2ce77">会員名</td> <td align="left" width="450"> &nbsp;<input type="text" name="kname" value="<?=$kname?>" size="40"> </td> </tr> <?php //-------------------------------------------------- // □ 住所 //-------------------------------------------------- ?> <tr> <td align="center" width="150" bgcolor="#b2ce77">住所</td> <td align="left" width="450"> &nbsp;<select name="ken"> <option value="1"<?if ($ken=="1"){echo " selected";}?>>北海道</option> <option value="2"<?if ($ken=="2"){echo " selected";}?>>青森県</option> <option value="3"<?if ($ken=="3"){echo " selected";}?>>秋田県</option> <option value="4"<?if ($ken=="4"){echo " selected";}?>>岩手県</option> </select> </td> </tr> <?php //-------------------------------------------------- // □ 性別 //-------------------------------------------------- ?> <tr> <td align="center" width="150" bgcolor="#b2ce77">性別</td> <td align="left" width="450"> &nbsp;<input type="radio" name="seibetsu" value="1"<?if ($seibetsu=="1"){echo " checked";}?>>男性 &nbsp;<input type="radio" name="seibetsu" value="2"<?if ($seibetsu=="2"){echo " checked";}?>>女性 </td> </tr> <?php //-------------------------------------------------- // □ メールアドレス //-------------------------------------------------- ?> <tr> <td align="center" width="150" bgcolor="#b2ce77">メールアドレス</td> <td align="left" width="450"> &nbsp;<input type="text" name="mail" value="<?=$mail?>" size="30"> </td> </tr> <?php //-------------------------------------------------- // □ パスワード //-------------------------------------------------- ?> <tr> <td align="center" width="150" bgcolor="#b2ce77">パスワード</td> <td align="left" width="450"> &nbsp;<input type="password" name="pw" value="<?=$pw?>" size="30"><br> &nbsp;5文字以下の半角数字を入力して下さい。 </td> </tr> <?php //-------------------------------------------------- // □ 画像ファイル //-------------------------------------------------- ?> ~ 中略 ~ <?php //-------------------------------------------------- // □ 備考 //-------------------------------------------------- ?> <tr> <td align="center" width="150" bgcolor="#b2ce77">備考</td> <td align="left" width="450"> &nbsp;<textarea name="biko" cols="60" rows="10"><?=$biko?></textarea> <input type="hidden" name="no" value="abc"> </td> </tr> </table> <br> <?php //-------------------------------------------------- // □ 登録ボタン //-------------------------------------------------- ?> <input type="submit" name="submit" value="   登録する   "> </form> </body> </html>

    • 締切済み
    • PHP
  • 複数のselectで値で1つも選択されていないとき

    POST-MAIL(http://www.kent-web.com/data/postmail.html)で注文フォームを作成中で、 複数の商品の個数(デフォルトでは0に設定)をselectで選択させようとしています。 例: <tr><td class="center">NO.01</td><td>あんまん</td> <td><select name="あんまん"><option selected value="">0</option> <option value="1">1</option> (~略~) <option value="9">9</option></select></td></tr> <tr> <td class="center">NO.02</td><td>にくまん</td> <td><select name="にくまん"><option selected value="">0</option> <option value="1">1</option> (~略~) <option value="9">9</option></select></td></tr> POSTMAILの機能では、formのinput valueに入力必須項目を記入できますが、 これに加え、すべての商品のselect値が「0」に設定されている場合も cgiのエラー画面でエラーメッセージを出したいのですが、可能でしょうか? お知恵を貸していただけるようお願いいたします。

    • ベストアンサー
    • CGI
  • テキストエリア送信の際の文字化けについて

    以下のように設定しました。英語の場合は良いのですが、日本語や中国語の文章を送信すると、着信文が文字化けします。文字化けを防ぐにはどうしたらよいでしょうか。 <FORM action="mailto:XXX@****" method="post" enctype="text/plain" name="Form"><TABLE bgcolor="pink" cellspacing="1" cellpadding="0"> <TR><TD bgcolor="#ffffff" width="151"><TEXTAREA rows="400" cols="50" name="coment" style=" width:200px;height:180px;background-image:url(TX_11_11.JPG);"></TEXTAREA></TD> </TR><TR><TD colspan="2" bgcolor="#ffffff"><INPUT type="submit" value="送信" style="color : black;background-color : #ff00ff;border-with:pink;border-style : solid ;border-color :pink ;border-width : 1px ;"><INPUT type="reset" name="取消" value="取消" style="color : black;background-color : #00ffff;border-with:pink;border-style : solid ;border-color : pink;border-width : 1px;"></TD> </TR></TABLE></form>

  • Mac IEのバグなのでしょうか?

    TMEspionです。 <table border="0" cellpadding="5" cellspacing="5"><tr><td width="100" align="left" bgcolor="#999999"><table width="50" border="0" cellpadding="5" cellspacing="5"><tr><td align="left" bgcolor="#FFFFFF">左</td></tr><tr><td align="center" bgcolor="#FFFFFF">中</td></tr><tr><td align="right" bgcolor="#FFFFFF">右</td></tr></table></td><td width="100" align="center" bgcolor="#999999"><table width="50" border="0" cellpadding="5" cellspacing="5"><tr><td align="left" bgcolor="#FFFFFF">左</td></tr><tr><td align="center" bgcolor="#FFFFFF">中</td></tr><tr><td align="right" bgcolor="#FFFFFF">右</td></tr></table></td><td width="100" align="right" bgcolor="#999999"><table width="50" border="0" cellpadding="5" cellspacing="5"><tr><td align="left" bgcolor="#FFFFFF">左</td></tr><tr><td align="center" bgcolor="#FFFFFF">中</td></tr><tr><td align="right" bgcolor="#FFFFFF">右</td></tr></table></td></tr><tr><td align="left" bgcolor="#999999">左</td><td align="center" bgcolor="#999999">中</td><td align="right" bgcolor="#999999">右</td></tr></table> --------------------------------- 上記のソースの様に、テーブルを縦2段、横2列にセルを作り、上段はテーブルタグ、下段はテキストでそれぞれalign属性をleft、center,rightと設定しています。 ところがInternet Explorer 5.2 for Macで見ると、 上段右のテーブルタグは「align="right"」の効果が出ていません。 この質問を呼んでいる回答者様には、ブラウザでどう表示されるんでしょうか? どう表示されたかという結果とブラウザ名を教えて下さい。

    • ベストアンサー
    • HTML
  • 【タグ】左寄せする方法

    一部消去していますが、以下のようなフォームを左に任意のスペースを空けて表示させる場合、どういったタグを使えばいいのでしょうか。 よろしくお願いいたします。 <FORM ACTION="" METHOD="GET" NAME="TG" TARGET="_blank"><table width="250" border="0"><tr><td bgcolor="#0000FF"><div align="center"><font color="#FFFFFF"><strong>検索</strong></font></div></td></tr><tr><td>選びください。<br></br><select name="stayym" size="1"><option value="200902"></option></select></br><br>選びください。</br><select name="catid" size="1">n><option value="11203</option></option></select><input type="submit" value="GO"></td></tr><tr><td><div align="right">ツーリスト</div></td></tr></table></FORM>

    • ベストアンサー
    • HTML

専門家に質問してみよう