![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
対象サイトの内容を取得するCGIを構築したいのですが、うまくいきません。
対象サイトがJavascript中心に構成されているせいでしょうか。
原因の判る方、どうかご教示願います。m(__)m
#!/usr/bin/perl
use LWP::Simple;
my $html = get("http://jun.sakura.ne.jp/~dk3/result/result225.ht …
#相対指定部分の置換
$mae = '\.\./';
$ato = 'http://jun.sakura.ne.jp/~dk3/';
$html =~ s|$mae|$ato|g;
print "Content-type: text/html\n\n$html\n";
No.3ベストアンサー
- 回答日時:
補足の内容を見ていると、No.2さんがおっしゃるように、ブラウザが文字コード判別を失敗しているようにも思えますね。
UTF-8の文字列をShift-JISとして表示すると、補足にあるような文字化けが起きます。
ブラウザから手動で文字コードを選んでみるとわかるかもしれません。
ところで、LWP::Simple::getは最近仕様が変わり、文字コードを判別して、Perl内部表現文字列を返すようになってますね。
Perl内部表現はutf8なので、補足にあるような文字化けから推測して、質問者さんが利用しているLWP::Simple::getが、Perl内部表現文字列を返してる可能性はありますね。
その場合、print文等で外部に出力するときはencode関数を用いて適切な文字コードに変換してから出力する必要があります。
use Encode;
$html = encode("cp932", $html); # ここでは、cp932(≒Shift-JIS)に変換
print "Content-type: text/html\n\n$html\n";
従来のバイト文字列を返すLWP::Simple::getの場合でも、(必要であれば)適切な文字コードの変換をしてください。
use Encode;
Encode::from_to($html, "utf8" => "cp932"); # ここでは、utf8 => cp932に変換
従来仕様のバイト文字列を取得したいのであれば、以下のようにLWP::UserAgentを利用すればいいと思います。
use LWP;
my $res = LWP::UserAgent->new->get("http://jun.sakura.ne.jp/~dk3/result/result225.ht …
if( $res->is_error ) {
print "Content-type: text/html\n\n";
print $res->status_line;
exit;
}
my $html = $res->content;
#相対指定部分の置換
$mae = '\.\./';
$ato = 'http://jun.sakura.ne.jp/~dk3/';
$html =~ s|$mae|$ato|g;
print "Content-type: text/html\n\n$html\n";
ご回答ありがとうございます!
詳しいことは分からないのですが
仕様の変更等があり出来なくなっていた…ということでしょうか。
ご提示いただいたもので試したところ、うまくいきました!
急いでいたものでとても助かりました!本当にありがとうございます!
No.2
- 回答日時:
なんとなく、ブラウザの表示する文字コードの問題をいっている気がしますが、
情報が足りません。
どういう処理があるのか説明していただかないと
どこでつまづきそうか、どうやったら原因究明ができるか、といったことが
答えようがないですよね。
- 処理概要(ここで必要な情報をできるだけいれる)
- 上記処理のここでこううまくいかない(上記処理概要に基づいて記述)
を書いてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
pythonエラー
-
jcode.plとはどんなものですか
-
CSVファイルの中で、「 , 」カ...
-
英数字のみ全角から半角に変換
-
エクセルで数値を全角文字(カ...
-
VBA EXCEL あるセルの中の一...
-
EXCELからCSVにすると余計なカ...
-
「何とかで始まり、何とかで終...
-
VBA 置換文字がみつからない時
-
文字コードの%E3%80%とは何です...
-
マクロを使ってフォルダー内に...
-
csvデータ ダブルクォーテ...
-
COBOLでの全角文字の判定をした...
-
住宅にカナを入力する際に丁目...
-
C#で、テキストボックスの入力...
-
データにカンマが入ったCSVデー...
-
[VBA][Excel]クリップボードか...
-
IEからEdgeへの移行に伴うIMEの...
-
スペースで区切られた氏名から...
-
正規表現 特定の文字列を含む行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
IMAP4でsubjectが検索ヒットしない
-
CASLIIの数値データ入出力
-
pythonエラー
-
BASP21によるbase64のデコード...
-
jisコードで16進数の『3c』か...
-
「繝・せ繝・」となる文字化け
-
URLエンコードされたデータを戻...
-
1つのサイトで文字コードが混在...
-
perlの日本語文字コードはどう...
-
Encodeモジュールで日本語化したい
-
Lite.pmを使ったメールで文字化け
-
Perlでのメール本文の解析について
-
Cookie変数の命名について
-
Perl:ファイル名だけ文字化けする
-
Perl 文字化け
-
javaでエンコードがうまくいかない
-
MIMEでエンコードされたMailのS...
-
メール(iso-2022-jp-2)のデコ...
-
index関数で日本語を使用する場...
-
Encode.pmで文字コードの判別
おすすめ情報