5
次最小限の例の出力は(私のLinuxマシン上の)ファイル::グロブが非UTF8にUTF8文字列を変換するの予期せぬ副作用を持っているように見えることを示していますperlのFile :: Globはutf8 :: decodeで常にポストフィルタリングされるべきですか?
#!/usr/bin/perl
use utf8;
use strict;
my $x = "påminnelser";
my $y = glob $x;
print "x=",utf8::is_utf8($x),"=\n";
print "y=",utf8::is_utf8($y),"=\n";
これは間違っている原因になっています私のプログラムでの行動。 Linuxでは、File :: Globの後にutf8 :: decode()を適用して修正できるようです。これはこれを修正する正しい方法ですか?これはFile :: Globのバグですか?私の修正により、Windowsなどの他のシステムで正しい結果が得られますか?
参考情報をお寄せいただきありがとうございます。しかし、これは私の疑問に答えるものではありません。これは、私の回避策が正しいかどうかです。私は、ASCII以外のファイル名を持つことができないことをユーザーに任意に伝えたくありません。 –
すべてのユーザーがファイル名のエンコーディングとしてutf8を使用している場合にのみお勧めします。 no_O.ISO8859-1というロケールを持つユーザーがいて、このロケールに基づいてファイル名を作成すると、機能しません。この場合は、 'Encode :: Guess'または同様のモジュールを使用して、推測することができます。 –
私は参照してください。だから私は私の質問への答えは、私の提案された回避策は悪い考えであり、一部のユーザーにとっては壊れそうだということです。 +1 –