2009-11-04 85 views
3

C#特殊字符我有一個​​路徑的小問題:在字符串崩潰程序

"D:\\Music\\DJ Ti%C3%ABsto\\Tiesto\\Adagio For Strings (Spirit of London).mp3" 
"D:\\Music\\Dj Tiësto\\Tiesto\\Adagio For Strings (Spirit of London).mp3" 

目前,當它發出這條道路我的音頻庫,它不能打開的路徑。 (它崩潰的原因是試圖將一個-1分配給一個trackbar,但它是無關緊要的)。

所以我想知道,是否有阻止C#切換特殊字符與%[code]?我做了一個替換「[」和「]」,但我寧願不必查找每一個特殊字符,並添加一行代碼來防止它。有沒有辦法解決?

+1

你最初是如何以編碼字符串結束的? – 2009-11-04 00:19:35

+2

是的,如果你是這樣的URI編碼本地文件路徑,你做錯了什麼。很多微軟的圖書館都會在預期URI時接受本地路徑,但即使微軟會告訴你,你也不應該那樣做。百分比編碼只能用於URI,而不能用於本地路徑。 (對於那些,直接使用Unicode字符串 - 所有的.NET文件處理的東西使用寬字符,所以它不應該有任何非ASCII字符的問題。) – 2009-11-04 00:24:29

+0

@Daniel:正確地說,我認爲'邁克'應該查看超出這個修復問題,並找出如何在第一個字符串結束了編碼。 – 2009-11-04 00:27:29

回答

5

致電Uri.UnescapeDataString

順便說一下,當在字符串中放置路徑時,可以在字符串之前放置一個@符號,以告知編譯器不要處理轉義代碼,如下所示:@"D:\Music\DJ Tiësto\Tiesto\Adagio For Strings (Spirit of London).mp3"。這樣,您不需要將每個反斜槓加倍。

+0

工作...感謝@提示太:) – Mike 2009-11-04 01:02:21