2013-01-07 52 views
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; 
      } 

這將返回false。看來我正在做的字符串處理是取代重音字符。在VS2012中的文本可視化工具將顯示有關信息(將DirectoryManager只是圍繞System.IO.Directory一包):

enter image description here

而作爲顯示警告信息將顯示有關:

enter image description here

如此看來,重音字符不被識別。搜索這個問題確實出現了,但主要是關於刪除或替換重音字符。我目前使用'正常'字符串處理。我嘗試使用FileInfo,但路徑似乎無論如何都受到損壞。

所以我的第一個問題是如何獲得路徑存儲到一個字符串,以便它會通過Directory.Exists測試?

這引發了路徑名中非拉丁字符的更廣泛問題。我有世界各地的用戶,所以我可以看到阿拉伯文。俄文,中文等。我如何處理所有這些?

+0

很可能你的INI解析代碼是蠕蟲,因爲它以ASCII(或類似的東西)打開utf8文件。 –

回答

5

問題幾乎可以肯定你是正在加載該文件的編碼錯誤。這是一個文件名的事實是無關緊要的 - 屏幕截圖顯示,在致電Directory.Exists之前,您已經丟失了相關數據。

您應該確保知道文件編碼(例如UTF-8,Cp1252等),然後將其作爲參數傳遞給您,但是您正在加載文件(例如File.ReadAllText)。如果這還沒有足夠的信息讓你走,你需要告訴我們關於這個文件的更多信息(瞭解它的編碼)以及更多關於你的代碼(你如何閱讀它)的信息。

一旦你設法加載正確的數據,我想希望文件方面只是自動處理自己。

+0

謝謝Jon .............. – ScruffyDuck

相關問題