我得到一个或多或少看起来像这样的字符串:
"C:\\bláh\\bleh"
我用它制作了一个 FileInfo,但是当我检查它的存在时它返回 false:
var file = new FileInfo(path);
file.Exists;
如果我手动将路径重命名为
"C:\\blah\\bleh"
在调试时并确保 blah 存在,其中有一个 bleh,然后 file.Exists 开始返回 true。所以我相信问题出在非ASCII字符上。
实际的字符串是由我的程序构建的。一部分来自应用程序的 AppDomain,即包含“á”的部分,另一部分在某种程度上来自用户。这两部分由 Path.Combine 组合在一起。我通过两种方式确认了结果字符串的有效性:将它从我的程序生成的错误(包括路径)复制到资源管理器中,打开文件就好了。在调试器中查看该字符串,它看起来正确转义,因为 \ 被写为 \。“á”由调试器按字面意思打印。
我应该如何处理一个字符串,以便即使它具有非 ascii 字符,它也会成为有效路径?