0

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

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

[Area.121]
Title=ést_test
local=D:\AITests\ést_test
Layer=121
Active=FALSE
Required=FALSE

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

if (!Directory.Exists(area.Path))
            {
                // some handling code
                area.AreaIsValid = false;
            }

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

在此处输入图像描述

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

在此处输入图像描述

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

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

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

4

1 回答 1

6

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

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

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

于 2013-01-07T17:22:55.627 回答