• ベストアンサー

PerlのCGIで全角スペースを入れて

PerlのCGIで全角スペースを入れて print <<HTML; <p>完了  ボタン  次へ<br> <input type="submit" value=" 完了 &gt; "></p> HTML 隙間をあけて見やすくするのに全角スペースを入れていますが ブラウザで表示したときに(charset=Shift_JIS") どんな時に文字化けするのか忘れたのですが どんな時に文字化けするのでしょうか?

  • CGI
  • 回答数1
  • ありがとう数8

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

いろんなケースがありますが ・PerlのスクリプトがShift_JIS以外のコードで書かれていて、出力時にShift_JISに変換するような仕掛けが無いとき ・スクリプトがShift_JISで書かれていて、いわゆる「ダメ文字」対策がされていなかったとき ・(記述してある位置が違う、ブラウザが対応していない、など)charset=shift_jisが上手く解釈されなかったとき ・上に加えて、自動判定に失敗したとき ・ブラウザの設定の方が優先されたとき あたりが頻度の高いものではないでしょうか

takumana20
質問者

お礼

回答ありがとうございます。 はい、Shift_JISで統一しています。DOCTYPEも書いています。 やっぱり全角スペースは使わない方が良いのでしょうか・・・ ボタンとかでも使うと適度に隙間が開いて見た目が良くなるのですが。

関連するQ&A

  • 前後の全角スペースを削除すると文字化けする

    PHP初心者です。 trimファンクションを使って前後の全角スペースを削除したいのですが $test = " 左右に全角スペースがある文字列 "; echo trim ( $test , " " ); だと問題なく表示されるのですが以下のようにテキストボックスに入力した文字の 前後の全角スペースを削除しようとすると最初の1文字目が文字化けします。 ●test_input.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title>前後の全角スペースを削除する</title> </head> <body> <form action="test.php" method="get"> <dl> <dt>文字を入力してください。</dt> <dd><input type="text" name="test" size="50" maxlength="50" id="test" /> </dd> </dl> <input type="submit" value="送信する" /> </form> </body> </html> ●test.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title>前後の全角スペースを削除する</title> </head> <body> <p>入力文字</p> <?php $test = ($_REQUEST['test']); echo ($test); ?> <br /> <br /> <p>trim ( $test , " " )</p> <?php echo trim ( $test , " " ); ?> </body> </html> どこがいけないのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • perl の grepで 全角カタカナで検索できません

    perl の以下のソースで、実行エラーになってしまいます。 grep で全角カタカナで検索できないのです。半角カタカナでは、うまく動きました。 全角文字(たとえば’中華’)でも正しく「中華料理」と出力されます。 ’ラーメン’で検索したら、’ラーメン店’と出力されるのが正しいと思うのですが、 なぜ動かないんでしょ? ↓ソース #!/usr/bin/perl @aaa = ("ラーメン店","カレーハウス","中華料理"); @aaa = grep /ラーメン/ , @aaa; print "Content-type: text/html\n\n"; print "<META http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">\n"; print <<"HTML"; @aaa HTML exit;

  • 入力フォームでの半角全角スペース、タブをそのまま反映したい。

    入力フォームに入力した半角スペース全角スペース 、タブをそのまま反映させて、 フォーム入力とほぼ同じ形で、Web上に表示させたい のですが。 単純に置き換えるだけですが、\r\nを<br>には 置き換えています。 スペースがよく分かりません。 また、タブは、入力フォームに入力できないのでしょ うか(フォームを移動してしまう)。 ちなみに、文字コードは、Shift_JISです。 単純に、Shift_JISだと、スペースはこうだから、 こういったタグに置き換える、といった感じが、 ありがたいです。

    • ベストアンサー
    • CGI
  • CGI(Perl)の文字化けについて

    WEBフォームからの入力データをHTMLに加工して表示するというシンプルなCGIプログラムなのですが、 全角スペースの後に全角カタカナが入ると、全角スペースの部分から後が文字化けしてしまいます。 他はきちんと表示されているのですが、全角スペースとカタカナが続いているのが良くないみたいで、文字化けしてしまうようです。 全角スペースを取ってしまえばいいのかと思い、WEBで検索して色々と試してみましたが、変わりません。。 このような場合はどういう対処をするのが一番いいのでしょうか。 文字コードはEUCを使っています。(WEBフォーム、CGIとも) 教えてください。よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • ColdFusionにて

    いま、ColdFusionで開発をしています。 下記のような簡単なものですが文字化けがおきています。 <HTML> <HEAD> <TITLE>テスト</TITLE> <CFCONTENT TYPE="text/html; charset=Windows-31J"> <CFCONTENT TYPE="text/html; charset=Shift_Jis"> </HEAD> <BODY> <FORM ACTION="Test.cfm" NAME="Test" METHOD="post" ENCTYPE="multipart/form-data"> <INPUT TYPE="Text" NAME="Txt" VALUE="<CFIF IsDefined("Txt")><CFOUTPUT>#Txt#</CFOUTPUT></CFIF>"> <INPUT TYPE="Submit" NAME="btn" VALUE="ボタン"> </FORM> </BODY> </HTML> 画面は、S_JISで表示しているのですが 全角文字を入力してボタンを押すと、全角文字が化けてしまいます。 原因等わかる方がいらっしゃいましたら教えてください。 出来れば、S_JISは変えないようにお願いします。

  • perlのcgiが文字化けします。

    perlを使ったcgiを作ろうと思い、こんなプログラムを書いてみたのですが、htmlのタグに囲まれた部分の日本語が文字化けしてしましいます。ファイルの文字列は上手く表示できるのですが… どうすればいいでしょうか。 文字コード判別をしてみたところ、このプログラム自体はShift-JISで書かれているようです。 開いているファイルはutf-8のようです。 #!/usr/bin/perl #ヘッダの表示 print "Content-Type: text/html; charset=utf-8\n\n"; print "<html>\n"; print "<head><title>掲示板</title></head>\n";#これが文字化け print "<body>\n"; print "<input type=\"text\" name=\"mail\" size=\"20\" value=\"\"><br>\n"; print "メッセージ<br>\n";#これも文字化け my $File = 'party0339.html'; if (-e $File) { #####@ファイルを開く…上でファイルが存在してることを確認して開けない場合はエラーメッセージ open(FF,"<:utf8",$File) or die "ファイル:$File を開けない $! \n"; my @FILE = <FF>; close (FF); ####@読み込んだデータを$Dataに格納する foreach (@FILE) { $Data = $_; print "$Data<br>\n"; } } #フッタの表示 print "</body>\n"; print "</html>\n"; exit (); 対策や原因などを教えてくださるとありがたいです。よろしくお願いします。

  • 全角文字と全角スペース

    いつもお世話になっております。 全角文字 + 全角スペース + 全角文字 上記以外の場合はエラーにする正規表現を思考しています。 いくつか試してみたのですが、うまくいきません。 -------------------------------------------------- ini_set('default_charset', 'eucJP-win'); ini_set('mbstring.http_output', 'eucJP-win'); ini_set('mbstring.internal_encoding', 'eucJP-win'); 1) if (preg_match('/^[ア-ンあ-ん亜-腕弌-熙]+[ ][ァ-ヶぁ-ん亜-腕弌-熙]+$/', $name)) { 2) if (!mb_ereg("^[ア-ンあ-ん亜-腕弌-熙]+\ [ア-ンあ-ん亜-腕弌-熙]+$", $name)) { -------------------------------------------------- スクリプト自体の文字コードはEUC-JPです。 ただ、正規表現のチェックをする文字列はCSVファイルで アップロードされたもので、Shift-JIS から eucJP-win に置換しています。 eucJP-win にしている理由は、特殊文字の文字化けを防ぐためです。 (ハシゴタカなど・・・) 以前こちらで質問し、回答をいただきました。 http://okwave.jp/qa3274023.html 間違っている箇所、他の方法がありましたら ご教示お願いいたします。 <環境> PHP 4.3.1

    • 締切済み
    • PHP
  • perlのメールフォームが文字化け

    perlのメールフォームが文字化けして困っています。 メールフォームの出力HTMLは、shift_jis それを、ISO-2022-JPに直して、送信しています。 また、jode.pl、mimew.plを使用しています。 何が原因で文字化けしているのか、教えていただけないでしょうか? よろしくお願いします。

    • ベストアンサー
    • Perl
  • 文字化けで混乱中です...

    こんにちは。PHPの文字化けで混乱しており、どなたかにご助言いただければ幸いです。 現在、PHPは拡張子「.php」、HTMLは拡張子「.html」で動いているものを 拡張子「.html」でもPHPを動作させたいので、.htaccessにて AddType "application/x-httpd-php; charset=Shift_JIS" .php .html と指定しました。 これで拡張子「.html」でもPHPが動かせるようになりましたが、それとともにPHPスクリプトの入っていない他のHTMLファイルが文字化けしてしまうようになりました。 しかし、.htaccessに AddType "application/x-httpd-php; charset=Shift_JIS" .php .html AddType "text/html; charset=Shift_JIS" .html こうしてしまうとPHPが効かなくなるし...うーん?と 多分スゴイ手前のところで混乱してきてしまいました。 HTMLファイル内ではmetaでShift-JISを設定しています。 HTMLファイル内でheaderとかやらない方法で、文字化けを回避する方法をお教えいただけますと助かります。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • Perlのcgiを中国語で表示可能にしたい

    OS:Windows7でサーバーはロリポップを使用しております。 Perlのcgiを「utf-8」で保存し、Perl内のhtmlも、「<meta http-equiv="Content-Type" content="text/html; charset=utf-8">」などのutf-8の設定にしていますが、ffftpでutf-8の文字コードで転送すると、「※CGI もしくは SSI が正しく動作していません。」と表示されてしまいます。 ffftpのホストの設定での、文字コードは「ホストの漢字コード Unicode(UTF-8)」、「ファイル名の漢字コード Unicode(UTF-8)」にしています。 何パターンか試してみましたが、ffftpの転送時の設定が「Unicode(UTF-8)」だと、「※CGI もしくは SSI が正しく動作していません。」と表示されるみたいです。 転送時の設定を「ホストの漢字コード 無変換(SHIFT-JIS)」、「ファイル名の漢字コード SHIFT-JIS」 にすると、cgiは動作します。但し、文字化けします。→ 黒い菱形に?マークの文字化け。 どうすれば、上記問題を解決できるでしょうか。 アドバイスをお願いします。 m(_ _)m

    • ベストアンサー
    • Perl