多かれ少なかれ次のような文字列を取得します。
"C:\\bláh\\bleh"
それを使用して FileInfo を作成しますが、その存在を確認すると false が返されます。
var file = new FileInfo(path);
file.Exists;
パスの名前を手動で変更した場合
"C:\\blah\\bleh"
デバッグ時に、bleh が内部にある blah が存在することを確認すると、file.Exists が true を返し始めます。したがって、問題は非ASCII文字にあると思います。
実際の文字列は私のプログラムによって構築されます。1 つの部分はアプリケーションの AppDomain から取得されます。これは "á" を含む部分であり、もう 1 つの部分はある意味でユーザーから取得されます。両方の部分は Path.Combine によってまとめられます。結果の文字列の有効性を 2 つの方法で確認しました。パスを含む、プログラムが生成したエラーからそれをエクスプローラーにコピーすると、ファイルが正常に開きます。デバッガーでその文字列を見ると、正しくエスケープされているように見えます。\ は \ と書かれています。「á」は、デバッガーによって文字どおりに出力されます。
非ASCII文字が含まれていても有効なパスになるように、文字列を処理するにはどうすればよいですか?