• ベストアンサー

cgiスクリプトの文字化け

既存のCGIライブラリ(cgi-lib.plとjcode.pl)を用いて、登録フォームを作りました。しかし、「入力」を押して、CGIを作用させると、文字化けがおこってしまいます。 cgiのなかで、文字コードをeucに変換しています。(jcode::convert機能)サーバーのCGI設定は全て確認しましたし、パーミッションも確認しています。文法などはあってると思いますし、ディレクトリ、文字コード(euc)・改行コード(LF)も確認しています。 他に原因があると思うのですが、回答よろしくお願いいたします。

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

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

  • ベストアンサー
  • Suzi
  • ベストアンサー率38% (130/334)
回答No.1

出力するhtmlのcharsetが euc-jp になっていますか? また、euc-jp とするところを、shift_jisのように、euc_jpとか? jcode.plなどの設定が合っていて、文字化けが起きるとすれば、今のところ上記ぐらいしか、思い浮かびませんが。

TKYJ08
質問者

お礼

本当にありがとうございました。Suziさんの回答でできました。 感謝します。 またプログラミングで質問するかもしれませんので、よろしくお願いいたします。

関連するQ&A

  • cgiがうごきません

    ApacheとPerlをインストールしてローカルでの動作確認OKなのですが、HP上では機能しません。 プロバイダー側が作った「アクセス権が認められてません ・・・どうたら、こうたら」のメッセージがでます。 すべてのファイル(cgi,html,pl・・)をEUC(文字)CR+LF (改行)にして、アスキーモードでアップロードしました。 Perlパスやパーミッションは間違いないとは思うのですが 、アクセスすると凄い文字化けになっています。掲示板は機能しません。FTPはFFFTPですので自動改行すると思うの ですが、コードの設定に関係があるのでしょうか? 私はWin98,プロバイダーはUNIX系です。それから、Apache とPerlを使ってエラーを調べられるようなことを聞いたの ですが、どのようにするのでしょうか?お願いします。

    • ベストアンサー
    • CGI
  • cgiの500エラー

    OSXを使っている者です miで文字コードEUC 改行コードLFです #!/usr/bin/perl print "hello"; と書いてtest.plで保存して パーミッションをchmodのコマンドで755 にして共有を可能にしてローカルで試したんですが ソースが表示されて全然有効になってないみたいです PHPもそうでした .phpで書いてhtmlの中に埋め込んで パーミッションも755にしてもソースが全部表示されて動かなかったです 拡張子は.plではなくてcgiなのか気になります ソースも違ってたら教えて下さい ちなみにwebサーバーで試したら Internal Server Error 500でしたftpでchmodで755にしたんですが もしかしてソースミスでしょうか? CGIのソースなどやり方の一覧を詳しく簡潔に教えて下さい御願いします

    • ベストアンサー
    • Perl
  • utf-8のマシンでsjisのデータファイルを読込み、eucでファイルに出力する方法

    utf-8のLinuxマシンで、sjis(改行コードCR+LF)のデータファイルを読込み、euc-jp(改行コードLF)でファイルに出力したいのですが、どのようにすればよいでしょうか。プログラム実行前後に入出力ファイルを直接コード変換することは考えておらず、全て一つのプログラム内でやりたいと考えています。 &jcode'convertで変換するのかなと思っているのですが、読込み時・書き込み時のどちらでやるべきなのか、あるいは両方やるべきなのか分かりません。データには、「・」「I,II」などの特殊文字(?)が含まれているので、それらの文字で問題が起きないかなどもちょっと心配です。 また、&jcode'convertでeucに変換すれば、改行コードも一緒にCR+LFからLFに変換されるものでしょうか。 文字コードのことがよく分かっていないので、的外れな質問になっているかもしれませんが、ご教示願います。

    • ベストアンサー
    • Perl
  • Movable Typeでmt-check.cgi実行時に文字化けする

    初めてのMovable Type3.121をレンタルサーバのロリポップに導入がうまくできたので、仕事に使っているLinux(Vine2.4)に導入しようとしています。文字コードについて調べてどうしてももわからなかったので、ご教授ください。   [状況]  ・Linux側の文字コードがEUCだと思っていたので、秀丸で一度mt-check.cgiを開き、文字コードをEUC、改行コードをLFにして保存した  ・mt-check.cgiをcgiが稼動できるディレクトリに保存  ・FFFTPにてアップロードし、一度viで開いて確認したところ、文字化けは見られない(正常にアップロードできているっぽい)  ・Apacheのversionは、1.3.27 上記の状態で、mt-check.cgiを実行すると、大部分の文字列は正常に表示されるものの何箇所か文字化けが発生しました。 ブラウザで開いた状態でsourceファイルを表示させたところ、「日本語(EUC)で読み込み中に変換できなかった文字列が56箇所ありました」とのことでした。 アップロードする際にあてずっぽうにファイルの保存形式をutf-8やshift-jisにしてみたり、改行コードをCR+LFやLF,CRにしてみても改善しませんでした。何が原因で文字化けが発生しているのかわかりません。どなたかご助言いただきたくお願いします。

  • Rubyのcgiが動作しません。

    下記のように4行のルビーのcgiを作りました。 ファイル名rb.cgi #!/usr/bin/ruby print <<EOF あああ EOF これをRubyを提供しているapacheサーバにアップロードし パーミッションを777にしました。 文字コードはEUC、改行はLFのみです。 しかし、Internal Server Errorが表示されます。 そこで、サーバにログオンし、このcgiファイルの ディレクトリまで移動し、./rb.cgiを実行すると あああと表示されます。また、このcgiファイルと 同一ディレクトリにあるparlのcgi(掲示板)は 正常動作しています。 どこが間違っているのでしょうか?

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

    登録フォームを作成し、入力した内容でDBに追加を行うなかで、PHPmyadminで実際に見てみると文字化けしています。 レンタルサーバ(OS:linux) (1)登録フォーム(shift_jis) ↓各値を渡す (2)確認ページ(shift_jis) ↓各値をmb_convert_encoding(shift_jisに変更) (3)追加 すると文字化けします。 以前、cgi-lib.plを用いてperlで書いていたものは、 文字化けしていません。 どこがおかしいのでしょうか? ちなみに (1)登録フォーム(euc-jp) ↓各値を渡す (2)確認ページ(euc-jp) ↓各値をmb_convert_encoding(euc-jpに変更) (3)追加 としても文字化けしています。 (DBだけでなく、ページ全体も)

    • ベストアンサー
    • PHP
  • 特定文字での文字化け

    DB(oracle)から抽出したものをPerl5でcsv出力しているのですが、特定文字で文字化けが起こってしまいます。 特定文字というのが、シフトJISの「拡張文字」と言われているものにあたるらしく、 0xED40~0xED9Eとか0xFA40~0xFA9Eとかです。 0xED40→ス、0xED9E→シ、0xFA40→。、0xFA9E→.となってしまいます。(文字を出したかったのですが、表示されなかったので文字コードにしました。) $strをDBより抽出した文字列として jcode::convert( \$str, "euc" ); : :(文字列の区切り処理) : jcode::convert( \$str, "sjis" ); ということをやっています。 以前、 &jcode'convert( $str, "euc" ); : :(文字列の区切り処理) : &jcode'convert( $str, "sjis" ); とやっていたのですが、この場合、 「半角カナ+文字コードが7cを含む文字」 が文字化けを起こしていました。 これを修正するために前者のような修正をしたのですが、 間違っているのでしょうか? すみませんが、よろしくお願いします。

  • CGIでjcode.plを読み込めなくなりました

    さんざん検索をかけて色々試したのですが、どうしても解決できず どなたかご存知のかた、教えてください。よろしくお願い致します。 つい昨日までちゃんと動いていたCGIが突然 「jcode.plがありません」 と訴えてきました。 4月にサーバーを乗換え丸2ヶ月、問題なく動いていたのに 突然です。何がなんだか分かりません。 もちろん、このCGIに関わるファイルは一切いじっておりません。 自分なりに検討した結果 引っかかっているのは以下のコード # 漢字コード変換ライブラリを読み込む if (-f "jcode.pl") { require "jcode.pl"; } else { &errexit("jcode.plがありません。\n"); } -略- &jcode'convert(*tmp, $kcode_cgi); このふたつです。jcode.plを読み込めない為にもれなく後出の呪文が効かないんだろうなという事は推測しているのですが。 このためフルパスでも試しましたが変化なし。 この読み込みをしなければ、CGIは取りあえず表示します。 なので、日本語変換プログラム以外は正常に動作しているようです。 どなたか同じような経験の有る方いらっしゃいませんか? アドバイスよろしくお願い致します。

    • ベストアンサー
    • CGI
  • 'cgi-lib.pl'などのファイルの位置は?

    Perlの基本的な質問ですが、cgi-lib.plやjcode.plは どのディレクトリに入れれば自然でしょうか? 私はLinuxとWindowsの両方にPerl5.6を入れておりまして、今までは相対パスによって、スクリプトの近くに置いていましたが、ディレクトリ(フォルダ)が変わるごとに設定しなおしで面倒になってきました。 WEBでもレンタルサーバーなど利用したことは無いんですが、このような基本ライブラリは、require 'cgi-lib.pl';で呼び出して?いると思いますが、 しかるべき位置にこのファイルが無いとだめだと思います。ご教授ください。

    • ベストアンサー
    • Perl
  • linuxサーバーにUPしたCGIにネット上でwinからカキコすると文字化け

    まず、サーバー環境ですが、 OS=Fedora core1を使っています。 プログラムはメモ帳++にて、保存コードをshift_jisからEUCにし、charsetをEUCにしてます。jcode.plも入っています。  過去ログで、 http://okweb.jp/kotaeru.php3?q=565241 と同じような状況なのですが、求める答えはなくて、新たに書き込みました。 CGIのアドレスは http://www.sinjyou.info/cgi-bin/cbbs/cbbs.cgi です。ためしに書き込みをしてあるのですが、文字化けで--; 一応jcodeも最新版を入れてみたりと試行錯誤はしてみたのですが・・・ これは書き込みをしたときにそのパソコンの文字コードごと保存してしまってて、プログラムはEUCで吐き出すからそれが原因かな?とか、shift_jisにブラウザのエンコードを直すときちんと表示されるので、その書き込みをする所(というかプログラム?)の文字コードがEUCに直せてないのか・・・初心者知識でいろいろ考えましたが、どうにもならなくて。  きちんと伝えられてるか心配ですが、どうかよろしくお願いいたします。

    • 締切済み
    • CGI