HTML::TreeBuilder
에 문제가 있습니다. 출력에 낯선 문자/이상한 문자가 표시됩니다. 코드가 모두 모양과 내용이 엉망 그리고 당신은 심지어 전체 프로그램에서 감소 된 테스트 케이스를 만들기 위해 귀찮게하지 않았기 때문에HTML :: TreeBuilder가 왜 mojibake/weird 문자를 출력에 표시합니까?
use strict;
use WWW::Curl::Easy;
use HTML::TreeBuilder;
my $cookie_file ='/tmp/pcook';
my $curl = new WWW::Curl::Easy;
my $response_body;
my $charset = 'utf-8';
$DocOffline::charset = undef;
$curl->setopt (CURLOPT_URL, 'http://www.breitbart.com/article.php?id=D9G7CR5O0&show_article=1');
$curl->setopt (CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.9 (KHTML, like Gecko) Chrome/6.0.400.0 Safari/533.9');
$curl->setopt (CURLOPT_HEADER, 0);
$curl->setopt (CURLOPT_FOLLOWLOCATION, 1);
$curl->setopt (CURLOPT_AUTOREFERER, 1);
$curl->setopt (CURLOPT_SSL_VERIFYPEER, 0);
$curl->setopt (CURLOPT_COOKIEFILE, $cookie_file);
$curl->setopt (CURLOPT_COOKIEJAR, $cookie_file);
$curl->setopt (CURLOPT_HEADERFUNCTION, \&headerCallback);
open (my $fileb, ">", \$response_body);
$curl->setopt(CURLOPT_WRITEDATA,$fileb);
my $retcode = $curl->perform;
if ($retcode == 0) {
my $dom_tree = HTML::TreeBuilder->new();
$dom_tree->ignore_elements(qw(script style));
$dom_tree->utf8_mode(1);
$dom_tree->parse($response_body);
$dom_tree->eof();
print $dom_tree->as_HTML('<>&', ' ', {});
}
sub headerCallback {
my($data, $pointer) = @_;
$data =~ m/Content-Type:\s*.*;\s*charset=(.*)/;
if ($1) {
$charset = $1;
$charset =~ s/[^a-zA-Z0-9_\-]*//g;
}
return length($data);
}
DOM 트리를 인쇄 중이지만 터미널이 UTF-8을 지원하지 않을 수 있습니다. 파일에 쓰고 페이지를 올바르게 표시하는 브라우저를 사용하여 읽으십시오. – MvanGeest
브라우저로 cgi로 인쇄를 시도했지만 그 결과는 같습니다. – Vjy