作者liyih ()
看板Perl
标题Re: [问题] 转换网页内容编码
时间Thu Jun 5 09:06:17 2008
※ 引述《Nicky0908 (王建民加油!)》之铭言:
: 因为有些网页为big5编码,有些则为utf-8编码,我想将utf-8编码的网页转成big5。
: 我已经知道怎麽将utf-8编码字串转成big5编码,但因为无法确定网页内容到底是utf-8还是big5
: 所以无法转换,我有试着要抓charset的内容。但有些网页charset设为big5,网页内容还是utf-8。
: 请问有解决的方法吗?还是有function可以判断字串内的文字是big5还是utf-8吗?
您可以先不考虑来源是 big5 还是 utf8,先用 Text::Iconv
来转换,再透过传回值是否为 undef 来判断转换过程是否有
错误。像是来源本来就是 big5 或是 (方方土) 之类的问题,
都会造成转换过程的错误。
#!/usr/bin/perl -w
#
use strict;
use warnings;
use Text::Iconv;
#
sub main
{
# Text::Iconv->raise_error(0);
my $converter = Text::Iconv->new("utf8", "big5");
my $conv_str;
my $retval;
my $str;
my $count = 0;
while (<STDIN>) {
$str = $_;
$count++;
$conv_str = $converter->convert($str);
$retval = $converter->retval();
if (defined($retval)) {
printf("%s", $conv_str);
}
else {
printf("LINE %d: Cannot convert from utf8 to big5!\n", $count);
}
}
}
main();
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.114.64.130