4

1 つの perl アプリケーションの作業を開始したところです。vs - ポータブルな方法で (正しく) 対処する方法についてアドバイスが必要です。unicode filenamesfilenames in the file content

Windows と Unix の世界では異なる Unicode エンコーディング (Unix utf8、Windows - 不明) が使用されていますが、Linux と Mac OS X ではファイル名の Unicode 正規化が異なります。(OS X - 強制的な NFD、Linux - 「通常の」NFC)。

私がすでに読んだすべてのアドバイスは次のとおりです:(常にアプリケーションの境界でユニコードデータを正規化します)-しかし、問題は-何が正しいか-最も移植性の高い方法ですか?

問題は、コンテンツに NFC を使用する OS X (テキスト ファイルの作成時) よりもです。他のシステムが何を使用しているかはわかりません。

質問、ポータブルアプリを作成し、ファイル名を処理する正しい方法は何ですか:

  • opendir/readdir
  • glob および同様の「ファイル操作」
  • テキストファイル (ファイル名を含むもの)
  • perl 内部...
  • 他の?

正規化はいつ、どこで行われますか? コンテンツにファイル名が含まれているutf8テキストファイルを保存する方法は?

私は知っています、これはすでに StacOverflow にある多くの perl-unicode 関連の質問です。私はおそらくそれらのほとんどを掘り下げましたが、上記の質問リストを処理するための「推奨される」プラクティスが何であるかをまだ理解していません。

特定のオペレーティング システムの違いに対処するためにモジュールを作成する必要がありますか? または、ファイル操作の OS の違いを処理する CPAN モジュールが既にありますか?)

誰かが推奨されるプラクティスを含む優れたリソースを教えてもらえますか? それとも、私が今思うよりずっと簡単ですか?

4

2 に答える 2

2

私が知る限り、MS はファイル システムに対して正規化を強制していません。これは、この最悪のシナリオを想定すれば、他の OS でも問題ないことを意味します。

機能していると思われる手法は、OS が認識しているファイルを OS に照会することです。選択した正規化された形式をキーとし、OS からの名前を値として含む正規化ハッシュを作成します。エレガントではありませんが、機能します。

于 2013-11-20T20:00:06.053 に答える