[心得] Windows下unicode的txt檔案操作

看板Perl作者 (....N )時間17年前 (2008/08/28 23:50), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/3 (看更多)
在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
push
08/30 15:31, 1F
文章代碼(AID): #18jib6aN (Perl)
文章代碼(AID): #18jib6aN (Perl)