[討論] 我的 Big5 轉 UTF-8 的簡單程式
我寫了以下的小程式來轉換檔案的內容從 Big5 變成 UTF-8,
並且加上 BOM 。遇到已經轉換過編碼,就不再轉換。
可是覺得似乎累贅的寫法很多,可是我已經沒辦法精簡了,
而且也不知道怎麼讓任何檔案(除了big5_to_utf8.pl自己)
都可以轉換。
不知道有沒有更好的寫法,還請多多指導。
# 讀入同一個目錄下的 data.txt 檔案
open (FILEHANDLE_R, "data.txt") or die "cannot open data";
open (FILEHANDLE_C, "data.txt") or die "cannot open data";
read(FILEHANDLE_C,$check_content,3);
# 檢查 UTF8 BOM,如果已經有 UTF-8 BOM 的記號,則馬上離開
my $top1 = unpack("C", substr($check_content, 0, 1));
my $top2 = unpack("C", substr($check_content, 1, 1));
my $top3 = unpack("C", substr($check_content, 2, 1));
if($top1 eq 239 && $top2 eq 187 && $top3 eq 191) {
print "The File is already with UTF-8 encodeing";
exit;
}
close (FILEHANDLE_C);
# 如果沒有 UTF-8 BOM 記號則繼續將檔案轉換成 UTF-8
use utf8;
binmode (FILEHANDLE_R, ":encoding(big5)");
while(read(FILEHANDLE_R,$line,1)) {
$utf8_content .= $line;
}
close (FILEHANDLE_R);
# 加上 BOM 紀錄,將 UTF8 的編碼內容寫入原檔案
open (FILEHANDLE_W, ">data.txt") or die "cannot write data";
$BOM=chr(0xFEFF);
print FILEHANDLE_W $BOM;
print FILEHANDLE_W $utf8_content;
close (FILEHANDLE_W);
# 離開
__END__
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.166.77.69
※ 編輯: dkview 來自: 218.166.77.69 (09/16 07:22)
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
Perl 近期熱門文章
PTT數位生活區 即時熱門文章