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

C# 如何处理目录名中的重音字符,c#,localizable.strings,C#,Localizable.strings,对包含重音字符的字符串使用Directory.Exists()时出现问题 这是目录路径:D:\est\u test\scapeuting。它以简单字符串的形式出现在我正在解析的文件中: [Area.121] Title=ést_test local=D:\AITests\ést_test Layer=121 Active=FALSE Required=FALSE 我的代码正在获取本地值并向其中添加\scape。我需要测试它是否存在(确实存在),并且我只是使用: if (!Directory.E

对包含重音字符的字符串使用
Directory.Exists()
时出现问题

这是目录路径:
D:\est\u test\scapeuting
。它以简单字符串的形式出现在我正在解析的文件中:

[Area.121]
Title=ést_test
local=D:\AITests\ést_test
Layer=121
Active=FALSE
Required=FALSE
我的代码正在获取本地值并向其中添加
\scape
。我需要测试它是否存在(确实存在),并且我只是使用:

if (!Directory.Exists(area.Path))
            {
                // some handling code
                area.AreaIsValid = false;
            }
这返回false。我正在做的字符串处理似乎是替换重音字符。VS2012中的文本可视化工具显示了这一点(directoryManager只是一个环绕
System.IO.Directory
):

显示的警告消息显示:

因此,重音字符似乎没有被识别。搜索此问题时确实会出现,但主要是关于删除或替换重音字符。我目前正在使用“正常”字符串处理。我尝试使用
FileInfo
,但路径似乎还是被弄乱了

因此,我的第一个问题是如何将路径存储到字符串中,以便它通过
目录.Exists
测试


这就提出了一个更广泛的问题,即路径名中的非拉丁字符。我的用户遍布世界各地,所以我可以看到阿拉伯语。俄语、汉语等。如何处理所有这些问题?

问题几乎肯定是您加载的文件编码错误。它是一个文件名这一事实无关紧要——屏幕截图显示,在调用
目录.Exists
之前,您已经丢失了相关数据

您应该确保知道文件编码(例如UTF-8、Cp1252等),然后将其作为参数传递到加载文件的过程中(例如
file.ReadAllText
)。如果这些信息不足以让您继续,那么您需要告诉我们更多关于该文件的信息(以了解其编码方式)以及更多关于您的代码的信息(如何读取)


一旦您成功加载了正确的数据,我希望文件方面能够自动处理。

问题几乎肯定是您加载的文件编码错误。它是一个文件名这一事实无关紧要——屏幕截图显示,在调用
目录.Exists
之前,您已经丢失了相关数据

您应该确保知道文件编码(例如UTF-8、Cp1252等),然后将其作为参数传递到加载文件的过程中(例如
file.ReadAllText
)。如果这些信息不足以让您继续,那么您需要告诉我们更多关于该文件的信息(以了解其编码方式)以及更多关于您的代码的信息(如何读取)


一旦您成功加载了正确的数据,我希望文件方面能够自动处理。

最有可能的是,当您以ASCII(或类似的方式)打开utf8文件时,INI解析代码正在运行。最有可能的是,当您以ASCII(或类似的方式)打开utf8文件时,INI解析代码正在运行。