• ベストアンサー

CGI(perl)での一部日本語の文字化けについて

perlでCGIを作成しています。jcode.plを使っているのですが、 表示される日本の一部だけが文字化けしてしまいます。 何が原因なのでしょうか。 解決方法について教えてください。 ◆perl文中の記述 ”登録申請を行ってください。”  ↓ ◆ブラウザ上の出力結果 ”登録瑞ソを行ってください。” 参考:jcode.pl,v 2.6 1997/12/24 17:01:11

  • mmei
  • お礼率74% (120/161)
  • Perl
  • 回答数4
  • ありがとう数0

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

  • ベストアンサー
回答No.4

No2さんの方法のほか、次の方法もあります。 「'」(シングルクォーテーション)を使う 例題では、次の記述となります。 '登録申請を行ってください。'

その他の回答 (3)

  • ajtptw
  • ベストアンサー率20% (1/5)
回答No.3

基本的にPerlで日本語を使うときはEUCにするべきです。

参考URL:
http://www.din.or.jp/~ohzaki/perl.htm
  • mflow
  • ベストアンサー率63% (42/66)
回答No.2

"登録申\請を行ってください。" こうしてください。SHIFT-JISだと申請の部分が化けてしまいます。あと表示とかも化けます。

  • -ROM
  • ベストアンサー率35% (33/93)
回答No.1

文字コードが原因です。

参考URL:
http://www.google.co.jp/search?num=100&hl=ja&q=perl+shift-jis+%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91&lr=

関連するQ&A

  • cgiスクリプトの文字化け

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

    • ベストアンサー
    • CGI
  • ver.5.8.8の文字化け

    サーバの移転でアクセスログを変更しているのですが、CGIで苦戦しています。 テキストデータが全て文字化けをしてしまいます・・・。 エキストデータ、ソースは全てSJISです。 perlのバージョンが5.8.8になりましたので、それまで使用していたjcode.plが使えないようです。 require './jcode.pl'; jcode::convert($refer, 'sjis') if ($charset); でエラーになります。 jcode.pm用に use Jcode; Jcode::convert($refer, 'sjis') if ($charset); としてもエラーになります。 これはjcode.pmが入ってないからだと思うのですが、 何か方法はないでしょうか? PHPはわかるのですが、Perlは全然わかりません。 どうか、ご教授をお願いします。

    • ベストアンサー
    • Perl
  • perl cgi のエンコード SHIFT->UTF-8

    こんにちは初心者です。 現在、既存のperl cgiをカスタマイズしております。 エンコードをshift_jisからUTF8に変更したいのですが、表示はCGI自体をUTF-8に変更し普通に見ることができるのですが、書き込みをしようとすると文字化けがおこります。 jcode.plをjcode.pmに変換すればよいらしいまでは分かったのですが、どこをどう変換すればいいのかjcode.pmのサイトを見ても理解できません。簡単な説明サイト紹介やアドバイス等をいただけませんでしょうか?

    • 締切済み
    • CGI
  • perlの日本語文字コードはどうすべき?

    perlで細かいことを理解できないままに呪文のように頭に require 'cgi-lib.pl'; require 'jcode.pl'; を使っていました。 そのうち文字化けなどの問題も出て、いろいろ調べたり質問したりして、jcode.plは古いからJcode.pmを使いなさいと指摘を受けたので、 require 'cgi-lib.pl'; require 'Jcode.pm'; と呪文変更を行いましたが、これについての使い方を理解せぬうちに、use Encode qw(from_to encode);としなさいと指摘を受け、 require 'cgi-lib.pl'; use Encode qw(from_to encode); と変えて使っていました。 ところが、このパターンを使っていたところ、GETでのデータの受渡がうまくできない(internal server error)となることに気づきました。 2つ目のパターンでも同じでした local($key,$val); undef(%in); &ReadParse; my($method) = $ENV{'REQUEST_METHOD'}; if ($method eq "GET"){ $QUERY_DATA = $ENV{'QUERY_STRING'}; }elsif ($method eq 'POST'){ read(STDIN, $QUERY_DATA, $ENV{'CONTENT_LENGTH'}); }else{ &error; } データの受信はこのようにはじめています。 そもそもJcode.pmやuse Encode qw(from_to encode);というのはjcode.plに変わる日本語変換のパッケージなのでしょうか? また、 require 'cgi-lib.pl'; require 'jcode.pl'; use Encode qw(from_to encode); とするとGETでの受渡も問題なかったのですが、2つを混在させても問題ないのでしょうか? というのも、メール送信で文字変換させるときに sub jis{ my $msg = $_[0]; Encode::from_to($msg, "shiftjis", "iso-2022-jp"); return $msg; } としているので、use Encode qw(from_to encode);がないとEncode::from_to()が使えないのかなと想像し2つをセットで使用しています。(冒頭でuse Encode qw(from_to encode)を宣言し、変換部分でEncode::from_to()を使用) jcode.pl、Jcode.pm、use Encode qw(from_to encode)、Encode::from_to()の関係について教えてください。 もちろん自分でもネットで調べてみましたが、思うように解説してあるところが見つからず困っています。

    • ベストアンサー
    • Perl
  • モバイルアドセンスcgi/perlでの設置方法

    モバイルアドセンスcgi/perlでの設置方法 DLしたCGIにグーグルモバイルアドセンスを設置したいと思っています index.cgi内に広告挿入オプションの記述があるのですが どうすればいいのか分かりません 初心者なので分かりやすく説明してもらえると助かります どなたかご教授お願いします ・DLしたCGIの中身 index.cgi jcode.pl graph.gif ._index.cgi ._jcode.pl data ┣log.cgi ┣bbslog.cgi ┣index.html ┣._log.cgi ┣._bbslog.cgi ┗._index.html ・index.cgi内の記述 # タグ広告挿入オプション # → <!-- 上部 --> <!-- 下部 --> の代わりに「広告タグ」を挿入する。 # → 広告タグ以外に、MIDIタグ や LimeCounter等のタグにも使用可能。 $banner1 = '<!-- 上部 -->'; # 上部に挿入 $banner2 = '<!-- 下部 -->'; # 下部に挿入 ・ディレクトリ/ファイル構成 # public_html / index.html (トップページなど) # | # +-- eqt / index.cgi [705] # | jcode.pl [604] # | # +-- data / log.cgi [606] # bbslog.cgi [606]

    • 締切済み
    • CGI
  • Perl/CGIについて

    #!/usr/bin/perl use CGI; $cgi = new CGI(); $from = $cgi->param('from'); $namae = $cgi->param('namae'); $naiyou = $cgi->param('naiyou'); print "Content-type: text/html\n\n"; # 設定 $sendmail = '/usr/lib/sendmail'; $jcode = './jcode.pl'; $to = 'ha***@***.ne.jp'; #$from = ''; $subject ='名鉄と地下鉄の直通運転'; # 文字コードライブラリの読み込み require $jcode; # メール送信 &jcode'convert(*subject,'jis'); open(MAIL,"| $sendmail -t"); # ヘッダ情報出力 print MAIL "To: $to\n"; print MAIL "From: $from\n"; print MAIL "Subject: $subject\n\n"; # 本文出力 print MAIL " $namae\n\n"; print MAIL " $naiyou\n"; close(MAIL); #確認表示 print " $namae\n"; print " $naiyou\n"; print "メールを送信しました\n"; end #確認表示の所で表示が改行されない。

    • ベストアンサー
    • Perl
  • CGI Perl のデバックで

    CGI Perl のデバックで ブラウザーに出力指定しました。 記述したCGIがそのまま表示されますが、どこかおかしいところは 何か印が付くんじゃないんですか? str.fileNotFoundNote が出て困ってます。 サーバーのCGIのディレクトリーなどは確認済みで、その通り指定してますが。 CGIのデバックでは 判らないですかね? 初心者マークで ほんとに すみません。

    • ベストアンサー
    • Perl
  • CGIプログラムを使った申し込みフォームでメーラーに送信し、HTML形式で表示していますが文字化けしてしまいます。。

    Perlで書いたCGIプログラムを使って、申し込みフォームを作成し、送信先をOutlookExpressのメーラーにしてHTML形式で表示しています。 サーバーはLINUX、メールを見ているPCはWindows98SEです。 しかし、なぜか申請書という文字が瑞ソ書というふうに文字化けしてしまいます。 他の字は大丈夫のようなんですが。。どうしたら良いでしょうか? もちろん、print OUT "Content-type: text/html; charset=\"ISO-2022-JP\"\n"; の指定はしています。

    • ベストアンサー
    • CGI
  • 文字コードEUCのPerlプログラムが文字化けしてしまいます

    Perlで書かれたCGIを実行しようとしているのですが、プログラムはEUCで記述されているそうです。nkf -g ***とするとEUC-JPとなります。 print " <META http-equiv=\"Content-Type\" content=\"text/html; charset=EUC-JP\">\n"; とも記述されているのですが、ブラウザで実行(閲覧)すると文字化けして、ブラウザのエンコードは、Unicode(UTF-8)になっています。 ちなみに、OSはCentOS5.2です。 どうやったら、EUCで記述されたCGIが文字化けせずに実行できるのでしょうか? teratermでサーバに接続語、viコマンドで表示しても文字化けしています。ファイルの文字コードをEUCからUTF-8にして(nkf -w ***)、ブラウザでアクセスしても文字化けしてしまいます。

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

    perl初心者です。 テキストボックスに入力した数値を計算して表示するCGIを作っています、(cgi-lib.plを使ってます。) 計算ボタンをクリックして表示される文字全てが文字化けしてしまうのですがブラウザソフトの表示→エンコード→日本語にするとキチンと表示されます、 これはブラウザソフトの設定がいけないのか、プログラムに何か手を加えると解決するのでしょうか? 宜しくお願い致します。

    • ベストアンサー
    • Perl