• ベストアンサー

UTF-8で書いたperlのパスが正しく読まれない

元々htmlファイルもcgiファイルもShift-JISで書いていました 英語環境に変えようと、UFT-8にすべくEncordingConverterでファイルを変換しました htmlファイルは文字コード指定も当然UFT-8にし、アップして表示させてみたところ問題なく表示されました しかし、cgiファイルの方が正しく表示されず、perlチェックをしてみたところパスが ・ソ#!/usr/bin/perl となっていました これが原因で正しく表示されなかったようです そこでcgiファイルをテキストエディタで開いてみたのですが、そのエディタ上では #!/usr/bin/perl と本来あるべき正しい表示になっています 文字コードもUTF-8形式になっています どうしれやればきちんと読み取ってもらえるのでしょうか? エディタで開いても「・ソ」の部分が表示されないのでなおしようがなく困っています どなたか解決方法お分かりの方ぜひご教授ください よろしくお願いします

  • choei
  • お礼率63% (286/451)
  • CGI
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1621/5657)
回答No.1

おそらくBOMだと思いますのでBOMなしのUTF-8で保存しなおせばよいかと(エディタによってはできないかもしれません)。 UTF-8にBOMは必要でないのですがWindowsのエディタではUTF-8だとBOMを付けるものは多いみたいです。

choei
質問者

お礼

回答ありがとうございました BOMコードのことは全く知識になかったので勉強になりました 問題の箇所もBOM除去ソフトですんなり解決できました ありがとうございました

関連するQ&A

  • TeraPadについて

    最近趣味でperlを用いたcgiの勉強をしています。 エディタはTeraPadを使用しています。 さくらでサーバをレンタルして、cgiファイル(hello worldを表示させる単純なもの)をアップロードしてみたのですが以下のことが分かりました。 ・文字コードをUTF-8で保存するとファイルにアクセスしたとき500エラーになる。 ・Shift_JISなど他の形式だとファイルは実行できる。 さくらに問い合わせたところ、UTF-8形式のcgiファイルだと、文頭が「#!/usr/bin/perl」から「繝サ・ソ#!/usr/bin/perl」と表示されているとのことでした。 これはTeraPadの仕様なのでしょうか? また、文頭に「繝サ・ソ」という文字が勝手に挿入されているのですが(自分のpcに保存してあるそのファイルをterapadやメモ帳でファイルを開いたときは表示されないが、ファイルをffftpで送信した後はそのような記述に変わってしまうようです)、これを回避するにはどうすればよいでしょうか? ご指摘の方よろしくお願いいたします。

  • Perlのパス

    レンタルサーバーのCGIの説明で、「1.perl のパスは、/usr/bin/perl です。2.プログラムの先頭の記述は必ず、#!/usr/bin/perl となります。」って書いてあるんですけど、これを使用する場合、 http://www.kent-web.com/data/cart.html たぶん、admin.cgi , cart.cgi , order.cgi を エディタ で開いて以下の箇所をあたまの部分、#!/usr/bin/perl を変えればいいんですかね?それで1.の/usr/bin/perl は何処に書くのかな?それとも説明 の前置きですかね?「1.perl のパスは、」という意味はリンクがこうなるよ!って意味ですかね? ただま、KENT WEBみながら苦戦してます。 シロウトですいません。

    • ベストアンサー
    • Perl
  • UTF-8でperlを書きたい

     お世話になっております。  これまで開発環境がWinであったこともあって、Shift_JISでperlを書いていたのですが、この度Mac OSXとデータベース関連でPerlを書かなくてはならないのですが、utf8で書くとInternal server Errorになってしまいます。Shift_JISに戻すと作動するのですが…。  いろいろ調べてみたところ、perl v5.8.xではuse utf8; を使わなくても作動するとのことですが…(私のサーバーでは、perl v5.8.8です)なかなかうまく作動してくれません。  改行コードはLFにしているのですが、その他の改行コードをいろいろやってみましたがやっぱり駄目でした。  何か基本的なことを忘れているのかな…と思うのですが、UTF-8で書く際に(または、Shift_JISから移行する際に)注意すべき点はどんなところでしょうか?

    • ベストアンサー
    • Perl
  • perlパス

    Windows2000機でWebServerを建てたのですが、CGIが認識しません。 WEBサーバーのクライアントソフトはApacheで 普通にHTMLは見れています。 perlをインストールした場所は C:\usr\local で VerはActivePerl 5.8.8.822 for Windows (x86)です。 場所は↑なのでCGIファイルのperlのパスはそのままいじらず、 perlのパスは#!/usr/local/bin/perl です。 一応#!C:/~以下   もやりましたがだめで、 CGIのテキストが表示されています。 色々調べてやったのですがどうもうまくいかず 教えていただけませんか

  • 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
  • 出力ページをUTF-8に

    CGIは全くの初心者で、いくつかの配布されたCGIを利用しています。 今回、HTMLファイル、JavaScriptファイル、CSSファイルの全ての文字コードをShift JISからUTF-8に変更しました。 Perlで出力されるページの文字コードもUTF-8にしましたが、CGIの方ではShift JISの指定のままのようです。 出来れば出力されたページもUTF-8のままにしたいのですが、どうすればいいのでしょうか?

    • 締切済み
    • CGI
  • CGIのパス /usr/bin/perl--

    こんにちは。CGIの最初のパス名をusr/bin/perl --と「ーー」をつけないと動かないCGIがあります。「ーー」はなんの意味なんなのでしょうか?

    • 締切済み
    • CGI
  • perlのcgiが動かない・・・

    cgiを組もうと思い、まずは簡単なもので試そうと思ったのですが、 うまくいかず困っています。 ↓プログラムは、こんな感じです。 ファイル名:index.cgi #!/usr/bin/perl print "<html>"; print "<body>"; print "abc"; print "</body>"; print "</html>"; <やってみたこと> ・Perlのパス「#!/usr/bin/perl」 が間違っていないか? which perl で /usr/bin/perl とでます。 ・Apache の設定が正しく行なわれているか? http://localhost でindex.htmlがきちんと表示できています。 ・「hello.cgi」 の設置場所を間違っていないか? プログラムソースが出るということは、 間違っていないのではないでしょうか? ・ためしに実行してみた TELNETで ./index.cgi <html><body>abc</body></html> とでてきました。 これはちゃんと動いているのでは?? 何か勘違いしていますか? お気づきの点を教えてください。よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • Jcodeで変換できません。。。

    下記のCGI(文字コードはutf-8)を作成したのですが、正常に表示されません。 ~を上手に判定できていないということでしょうか??? また、もし、正しく変換できないのであれば、Jcodeで変換できない文字の一覧などあれば助かります。 分かる方、何卒、宜しくお願い致します。 #!/usr/bin/perl print "Content-type: text/html;charset=Shift_JIS\n\n"; $str = "1~10"; use Jcode; Jcode::convert( \$str,"sjis","utf8"); print $str; 表示された結果 1?10 となりました。

    • ベストアンサー
    • Perl
  • utf-8コードの指定

    以下のURLにて同じ質問をしました。 http://soudan1.biglobe.ne.jp/qa4938782.html その時は解決したと思ったのですが、私の勘違いでした。 Undefined subroutine &main::Jcode called at listpage.pl line 220, line 855. というエラーからして、 $value = Jcode($value)->utf8; という記述そのものの問題ではなく、jcode.pmが認識されていないということなのでしょう。 でもプログラムの最初には use Jcode; としてあるし、パスが通っていないことも考えて#!(何と呼ぶんだったっけ?)も #!/usr/bin/perl -I /usr/lib としました。perl.exeをd:\usr\bin/に置いて /usr/bin/perl で良いなら、jcode.pmはd:\usr/libにあるからパスはこれで良いですよね!? ちなみにこのディレクトリにはcgi.pmも置いていますが、cgi.pmは普通に動いてます。 何が問題だと考えられますか? お手数をお掛けします。

専門家に質問してみよう