• ベストアンサー

CGIのテキストが文字化けします。

PERL/CGI大全555という本についていたCDからスクリプトをコピーしましたが日本語が妙なカタカナに文字化けしていて使えません。スクリプトはウィンドウズ用とユニックス用がありWIN2000を使っているのでウィンドウズ用を開いているのですがだめです。何か考えられることはありますか?

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

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

  • ベストアンサー
  • the845t
  • ベストアンサー率33% (246/743)
回答No.3

$ENV{'REMOTE_ADDR'} あと、EOLの後に改行がないとか。

yuki0909
質問者

お礼

ありがとうございました。やっとできました。

その他の回答 (3)

  • me_no_car
  • ベストアンサー率24% (22/90)
回答No.4

多分これが原因でしょう。 print <<"EOL"; Content-type: text/html    ↓ print "Content-type: text/html\n\n" print <<"EOL"; としてみてください。 CGIで標準出力する時は"Content-type: text/html\n\n"を一番最初に 書くのがお決まりです。 \n\nと改行を2ついれる決まりがあります。

  • matsura
  • ベストアンサー率12% (1/8)
回答No.2

公式サイトより引用。 > 2002年4月12日(金)20:56:23 > >  Perl/CGI逆引き大全に一部ミスタイプが、ありました。 >お買い上げの皆様には、大変ご迷惑をお掛けしますが、 >巻末記載のURLまで、アクセス願います。 >正誤表を、用意致しました。 > >お知らせ頂いた、読者様には感謝申し上げます。 参考になりますでしょうか? また、補足要求として、どの時点で文字化けするのですか? CGIが吐いた文章が文字化けするのでしょうか? それともスクリプト自体をTEXTエディタで開いた時に文字化けするのでしょうか?

yuki0909
質問者

補足

このスクリプトを実行したいのですが。 ファイル名は CGI228.pl でアスキーモードで転送し755に変えてあります。 これを実行すると「Internal Server Error」と表示されます。 文字化けはテキストエディタが原因でした。 #!/usr/bin/perlは間違いありません。 #!/usr/bin/perl print <<"EOL"; Content-type: text/html <html> <body> 現在の接続元IPアドレスは<br> $ENV'REMOTE_ADDR'}<br> です </body> </html> EOL

  • the845t
  • ベストアンサー率33% (246/743)
回答No.1

考えられることとして、 そのスクリプトがEUCで書かれていて、 開いたソフトが EUCに対応していないのではないでしょうか。 例えばEUCで書かれたファイルはメモ帳では読めません。 sakuraなどフリーのテキストエディタを利用されると良いと思います。

関連するQ&A

  • 秀丸でCGIを開いたら文字化けしました。

    下の質問に引き続きもうひとつお願いします。 秀丸で開くと文字化けしたのに「MKエディター」で開くと文字化けしないのはなぜでしょう? 本の付録のCDにはウィンドウズ用のCGIと書いてありそのまま普通のテキストエディタでも使えそうなものなのですが何が違うのですかね? CRLFとLFがありCRLFの方を秀丸で開いたのですがだめなのですか? 他の本のものはそのまま使えていたので余計不思議です。 MKエディタと何が違うのでしょうか?

    • ベストアンサー
    • CGI
  • AN HTTPDでCGIを起動すると文字化けする

    私はCGI(Perl)のテストに「AN HTTPD 1.42p」を使用していますが、それを使うとどうしても日本語が文字化けしてしまいます。 ブラウザのエンコードを変更しても文字化けしたままです。 正しく表示できるようにさせる方法ってあるんでしょうか?

  • 文字化け

    CGIの中に文字をして、 サーバーにアップして、アクセスすると、 ある一部のカタカナと漢字が文字化けを起す事があります。 例えば【ソ】【表】 文字化けをした場合、スクリプトを再度開きその部分の後ろに【\】をつければ解消する事は解っているのですが、 いちいちサーバーにアップして見なければ、 文字化けがおきているかどうか解らないので、 文字化けをおこす文字リストなどがあれば、 アップする前に対処できるので、 そう言ったリストはありませんでしょうか? 探して見てるのですが、なかなか見つかりません。

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

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

    • ベストアンサー
    • CGI
  • 携帯電話でCGIのファイルを読むと文字が・・・

    携帯電話で読めるようなホームページを作っています。 ところが、FORMでCGIファイルを見に行くと、日本語が文字が化けます。 CGIファイルはPERLですが、UNIXサーバでPERLスクリプトをSHIFT JISで書くとうまく動作しないことがある、と、手持の本には書いてありました。 みなさんは、どの様にされておられるのでしょうか? あるいは先の本に書かれていることは昔の話しで、今はUNIXのPERLでもSHIFT JISとCR+LFでスクリプトを書いても問題ないのでしょうか? よろしくお願いします。

    • 締切済み
    • CGI
  • 文字化け

    こんにちわ。今アメリカにすんでいてこちらでPCを買おうと思ってます。でもこっちのPCにはアメリカ版ウィンドウズが入ってます。つまり日本のCDなどいれるとインストール時の文字やインターネットのチャットルームなどは文字化けします。もし、こっちのPCに日本語版ウィンドウズをインストールしたとなればそれら等の文字化けはなくなるのでしょうか?もちろん最初に日本語版ウィンドウズをインストールするときは文字化けした画面がでてきますがインストール後はちゃんと日本語は文字化けしないででてくるのでしょうか?教えてください。

  • 文字化け

    下記のようなcgiスクリプトがあり、test1.cgi から リンクの test2.cgiを呼ぶと 「リンドウ」が文字化けしてしまいます。 文字化けしないようにするには、どうしたらいいでしょうか。 Perl cgi 初心者です。 --------test1.cgi----------------------------------------- #!/usr/bin/perl print "Content-Type: text/html; charset=EUC-JP\n\n"; $name="リンドウ"; print "name=$name<br>"; print "<a href=\"test2.cgi?aaa,${name},bbb\">test2.cgi</a>\n"; ---------test2.cgi------------------------------------------------- #!/usr/bin/perl print "Content-type: text/html; charset=EUC_JP\n\n"; $query = $ENV{'QUERY_STRING'}; print "query=$query\n";

    • ベストアンサー
    • CGI
  • RSSリーダーのCGIによる文字化け

    問題はCGI使用の際、一部文字化けしてすまうことです。 RSSリーダーからlog出力の際に文字化けしてしまうようです。 http://www.candy-cgi.com/perl/RSS_reader_Type1.html こちらのCGIを利用しているのですが、構造を見てみると 1.RSSファイルをメインCGIが数分ごとに処理→2.logファイルに出力→3メインCGIがそれをHTML化して書き出す という風になってるようなのですが、1から2にかけて、ある文字が文字化けしてしまいます。 具体的には「~」の文字が「?」に変わってしまうのです。 もっと具体的に言えば、「もみあげちゃ~しゅ~」→が「もみあげちゃ?しゅ?」となります。 それ以外の文字はいまのところ文字化けするのを確認しておりません。 logファイルに書き出される時点で文字化けしているので、htmlに文字コードをきちんと書き記すなどの対策は効果がありませんでした。 解決ヒントになりそうなことでもあったら、よろしくお願いします。

    • ベストアンサー
    • CGI
  • ユニックスとウィンドウズとのテキストのやり取り

    ユニックスのイーマックスで書いたテキストを、ウィンドウズのメモ帳で開くと日本語の部分が文字化けしてしまいます。 同様に、ウィンドウズのメモ帳で書いたテキストを、ユニックスのイーマックスで開くと日本語の部分が文字化けしてしまいます。 ユニックス ⇔ ウインドウズ で、日本語テキストのやり取りをする方法を教えていただけないでしょうか。 また、イーマックスでは半角英数字は 左ドラッグで文字列を反転 → 真ん中クリック でカットアンドペーストが出来ますが、日本語全角文字は出来ません。 日本語をカットアンドペーストする方法も教えていただけないでしょうか。 OSはソラリスでTWMデスクトップ環境を使っております。

  • htmlで呼び出したCGIの出力が文字化けする

    下記のInput.cgiというスクリプト(改行コードLF, 文字コードUTF-8) ---------------- #! /usr/bin/perl $method = $ENV{'REQUEST_METHOD'}; if ($method eq 'POST') { read(STDIN, $buf, $ENV{'CONTENT_LENGTH'}); } elsif ($method eq 'GET') { $buf = $ENV{'QUERY_STRING'}; } print "content-type: text/html\n\n"; print "メソッドは$methodでした。<br>\n"; print "受け取ったデータは$bufでした。\n"; ---------------- があります。これをブラウザで見ると(入力なしのまま) 「メソッドはPOSTでした。  受け取ったデータはxxxでした」 と正常に表示されます。 次に次の内容のhtml(改行はLF,文字コードはShiftJIS) ------------- <html><head> <title>FORMによるデータ転送</title></head> <body> <form method="POST" action="myInput.cgi"> <input type="text" name="text"><br> <input type=submit value="送信"> <input type=reset value="取消"> </form></body></html> -------------- をブラウザで表示させ、inputボックスに英数字(または日本語)を入力し、「送信」をクリックすると、今度はCGIスクリプト中の日本語を含めて総ての日本語出力が文字化けしてしまいます。 これが起きるのは、htmlとCGIの文字コードが異なるからでしょうか? 文字化けを止めるには何をすればよいのでしょうか? 教えて下さい。お願いいたします。

専門家に質問してみよう