字符串崩溃程序中的C#特殊字符

字符串崩溃程序中的C#特殊字符,c#,string,C#,String,我对路径有一个小问题: "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分配给轨迹栏……但这与此无关) 所以我想知道,有没有办法阻止C#用%[code]切换特

我对路径有一个小问题:

"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分配给轨迹栏……但这与此无关)

所以我想知道,有没有办法阻止C#用%[code]切换特殊字符?我为“[”和“]”做了一个.Replace,但我不必查找每个特殊字符,并添加一行代码来防止它。这有什么办法吗?

打电话


顺便说一句,在字符串中放置路径时,您可以在字符串之前放置一个
@
符号,告诉编译器不要处理转义码,如下所示:
@“D:\Music\DJ Tiësto\Tiesto\Adagio For strings(Spirit of London).mp3”
。这样,您就不需要将每个反斜杠都加倍。

首先,您是如何得到编码字符串的?是的,如果您对这样的本地文件路径进行URI编码,那么您就做错了。当需要URI时,很多Microsoft库都会接受本地路径,但即使是Microsoft也会告诉您不应该这样做。百分比编码应该只用于URI,而不是本地路径。(对于那些人,直接使用Unicode字符串——所有的.NET文件处理都使用宽字符,所以非ASCII字符应该不会有任何问题。)@Daniel:正是,我认为Mike应该超越这个修复问题,找出字符串最初是如何编码的。啊,如果有“伦敦精神”就好了那首歌的混音。很好,你可以编文件名。