作者redmist (....N )
看板Perl
标题[心得] Windows下unicode的txt档案操作
时间Thu Aug 28 23:50:29 2008
在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
1F:推 beakdoosan:push 08/30 15:31