私は、Windows XPマシン上でディレクトリにデンマーク語の文字を含むファイルを持っています。私はStrawberry perlを使い、このファイルを読んでみたいと思います。次のコードは正常に動作します。Win32 :: Unicode :: Fileを使用していないStrawberry perlで、長いファイル名のファイルをUnicodeで読み取るには?
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
あなたはエンコーディングとしてUTF16を使うべきです。 $ fnameはデバッガでどのように見えるのですか? –