星期五, 1月 28, 2005

utf2big5.pl

use Unicode::String qw(utf7 utf8 utf16);
use Unicode::Map;

$sszUTFFilename = @ARGV[0];
$sszUTFType = @ARGV[1];

open(UTFFILE, $sszUTFFilename) or die("can't open $sszUTFFilename: $!");
@aszLines = ;
$sszOneLine = join("", @aszLines);
close(UTFFILE);
$oBig5Map = Unicode::Map->new("cp950") || die("can't create Unicode::Map
object: $!");

if ($sszUTFType eq 'utf7') {
$oUtf = utf7($sszOneLine);
} elsif ($sszUTFType eq 'utf8') { $oUtf = utf8($sszOneLine);
} else { die("unknown utf type: $sszUTFType");
}
$sszBig5OneLine = $oBig5Map->to8($oUtf->utf16);
unlink($sszUTFFilename);
open(BIG5FILE, ">$sszUTFFilename") or die("can't create $sszUTFFilename:
$!");
print BIG5FILE $sszBig5OneLine;
close(BIG5FILE);