我有一個文件位於Windows XP機器上的一個目錄中,其中有丹麥語字符。我使用Strawberry perl並希望閱讀此文件。以下代碼正常工作:如何在不使用Win32 :: Unicode :: File的情況下使用unicode在草莓perl中讀取長文件名的文件?
use Win32::Unicode::File;
# Some code left out....
$fname = $mw -> getOpenFile(-filetypes=>$types);
my $fh = Win32::Unicode::File->new;
$fh->open('<', $fname);
getOpenFile例程來自Tk。由於某種原因,Win32 :: Unicode :: File有一些不幸的副作用,我無法忍受(它吃掉了我的內存,請參閱"Out of memory" with simple Win32::Unicode::File readline loop and Strawberry Perl)。現在,如果我嘗試在沒有Win32 :: Unicode :: File接口的情況下打開文件,我會收到一個找不到的文件。原因是路徑得到了不正確的解釋。我試圖根據Perl: managing path encodings on Windows轉換路徑,因爲某些原因無法正常工作。我應該如何解決這個問題?我試過以下內容:
use Encode;
# Some code left out....
$fname = $mw -> getOpenFile(-filetypes=>$types);
my $fh;
open($fh, '<', encode("utf8",$fname,Encode::FB_CROAK));
而且它不起作用。有任何想法嗎?
請原諒我,如果我不清楚。
親切的問候, 邁克爾
替代選項:http://p3rl.org/PerlIO::fse http://p3rl.org/Path::Class::Unicode – daxim 2012-01-05 12:34:55
你應該使用UTF16作爲編碼。 $ fname在調試器中看起來如何? – 2012-01-05 14:55:36