Handling of Japanese WEB pages
Perl-5.8 以後で日本語の WEB ページを取得したとき,漢字コードを適切に扱
うために,末尾に添付したようなスクリプトを書いてみました.
しかし,疑問が2つあります.
(1) Perl-5.8 で文字コードを自動判定してもらうには,どうしたらいいでしょ
うか?
(2) このスクリプトでは Content-Transfer-Encoding: / Content-Encoding:
に対応していませんから,圧縮されたコンテンツは適切に扱えません.こ
んなのはきっと車輪の再発明に違いないと思うのですが,それらの
decode までを実現しているモジュールは配布されていないのでしょうか?
--
土屋 雅稔 ( TSUCHIYA Masatoshi )
^L
#!/usr/local/bin/perl
use strict;
use encoding "euc-jp";
use LWP::UserAgent;
use Encode qw/ decode /;
&get( @ARGV );
sub get {
my( $url ) = @_;
my $ua = LWP::UserAgent->new();
my $response = $ua->get( $url );
if( $response->is_success ){
print &decoded_content( $response );
}
}
sub decoded_content {
my( $response ) = @_;
my $charset = "";
for( $response->headers->content_type ){
if( m/\Acharset=\"?([^\"]+)\"?\Z/ ){
$charset = $1;
goto detect_charset;
}
}
if( $response->content =~
m!<meta\s+http-equiv=\"?content-type\"?\s+content=\"?[^;]+;\s*charset=([^\"]+)\"?\s*/?>!is ){
$charset = $1;
} elsif( $response->content =~
m!<meta\s+content=\"?[^;]+;\s*charset=([^\"]+)\"?\s+http-equiv=\"?content-type\"?\s*/?>!is ){
$charset = $1;
}
detect_charset:
$charset =~ s/^\s+//;
$charset =~ s/\s+$//;
decode( $charset, $response->content );
}
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735