[心得] Windows下unicode的txt檔案操作
在window下的.txt檔案的編碼格式有ANSI(應該是最常用)、UTF-8、Unicode(UTF-16LE)、
和Unicode big endian,之前處理utf-8的文字都是使用Encode這個模組
use Encode;
$line = <$FH>;
$line = decode("utf-8",$line);
$line = encode("big5",$line);
#進行處理
但這方法遇到Unicode就不行了,出來都是亂碼,今天終於找到一個方法處理這問題,
但要先灌activeperl(Windows上應該都是灌這?),假設目的是要讀取Unicode格式的
檔案unicodeFile.txt,檔案內容經過處理後儲存成ANSI格式的檔案ansiFile.txt
use Win32;
use Win32::OLE;
use strict;
my ($system, $file, $contents, $newFile);
use constant ForReading => 1;
use constant OpenAsAscii => 0;
$system = Win32::OLE->new('Scripting.FileSystemObject');
#OpenTextFile方法的第四個參數填-1代表以unicode方式開啟檔案,其他參數的意義
#可查詢微軟msdn中OpenTextFile的說明
$file = $system->OpenTextFile('C:\\VBS\\unicodeFile.txt', ForReading, 0, -1);
$contents = $file->ReadAll();
$file->Close();
#
#在這裡處理$contents
#
#類似地,最後一個參數填0可將檔案以ansi格式除存
$newFile = $system->CreateTextFile('C:\\VBS\\ansiFile.txt', 1, 0);
$newFile->WriteLine($contents);
$newFile->Close();
以上是研究VBScript發現的方法,在windows下使用perl處理中文被編碼問題弄得很煩的
人可以參考看看
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.133.14.52
推
08/30 15:31, , 1F
08/30 15:31, 1F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 3 篇):
Perl 近期熱門文章
PTT數位生活區 即時熱門文章