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测试?
这引发了路径名中非拉丁字符的更广泛问题.我有世界各地的用户,所以我可以看到阿拉伯语.俄罗斯人,中国人等在路上.我该如何处理所有这些?
几乎可以肯定的是,您使用错误的编码加载文件.它是文件名这一事实无关紧要 - 屏幕截图显示您在致电之前丢失了相关数据Directory.Exists.
您应确保知道文件编码(例如UTF-8,Cp1252等),然后将其作为参数传入,但是您正在加载文件(例如File.ReadAllText).如果这不足以让您前进,您需要告诉我们有关该文件的更多信息(以确定其中的编码)以及有关您的代码的更多信息(如何阅读它).
一旦你设法加载了正确的数据,我希望文件方面只是自动处理自己.