如何处理目录名称中的重音字符

Scr*_*uck 0 c# localizable.strings

我在使用Directory.Exists()包含重音字符的字符串时遇到问题.

这是目录路径: D:\ést_test\scenery.它作为我正在解析的文件中的一个简单字符串进入:

[Area.121]
Title=ést_test
local=D:\AITests\ést_test
Layer=121
Active=FALSE
Required=FALSE
Run Code Online (Sandbox Code Playgroud)

我的代码采用本地值并添加\scenery到它.我需要测试它是否存在(它确实存在)并且只是使用:

if (!Directory.Exists(area.Path))
            {
                // some handling code
                area.AreaIsValid = false;
            }
Run Code Online (Sandbox Code Playgroud)

这返回false.我正在做的字符串处理似乎正在替换重音字符.VS2012中的文本可视化器显示了这一点(directoryManager只是一个环绕System.IO.Directory):

在此输入图像描述

显示的警告消息显示如下:

在此输入图像描述

因此似乎没有被识别出重音字符.搜索此问题确实出现了,但主要是关于删除或替换重音字符.我目前正在使用'普通'字符串处理.我尝试过使用,FileInfo但无论如何,路径似乎都被破坏了.

所以我的第一个问题是如何将路径存储到字符串中以便它通过Directory.Exists测试?

这引发了路径名中非拉丁字符的更广泛问题.我有世界各地的用户,所以我可以看到阿拉伯语.俄罗斯人,中国人等在路上.我该如何处理所有这些?

Jon*_*eet 6

几乎可以肯定的是,您使用错误的编码加载文件.它是文件名这一事实无关紧要 - 屏幕截图显示您在致电之前丢失了相关数据Directory.Exists.

您应确保知道文件编码(例如UTF-8,Cp1252等),然后将其作为参数传入,但是您正在加载文件(例如File.ReadAllText).如果这不足以让您前进,您需要告诉我们有关该文件的更多信息(以确定其中的编码)以及有关您的代码的更多信息(如何阅读它).

一旦你设法加载了正确的数据,我希望文件方面只是自动处理自己.