字符串编码

时间:2010-09-10 21:04:43

标签: c# encoding

我正在检查iTunes资料库的XML备份中是否存在文件。

如何更改此字符串

E:\Entertainment\Music\Latin\100% Azucar The Best of Celia Cruz & La Sonora Matancera/08 Mi Soncito.mp3

到这个

E:/Entertainment/Music/Latin/100%25%20Azucar%20%20The%20Best%20of%20Celia%20Cruz%20&%20La%20Sonora%20Matancera/08%20Mi%20Soncito.mp3

的变化:

  1. 空间变为%20
  2. 反斜杠变为正斜杠
  3. %(百分号)变为%25

5 个答案:

答案 0 :(得分:7)

看起来像两件事:

1)用正斜杠替换反斜杠。

2)应用URI编码。

第一个是显而易见的。对于第二个,您有一些选择,包括Uri.EscapeDataStringUri.EscapeUriStringHttpUtility.UrlEncodeHttpUtility.UrlPathEncode

修改

3)正如Vilx注意到的那样,文件名部分似乎有HtmlEncoding。

也许最好的答案是使用Uri类对部件进行切片和切块,并根据需要对其进行编码。

答案 1 :(得分:4)

我想我找到了他问题的关键部分。它隐藏在那里,作为第一句话,所有人,所以没有人注意到它。 XD

  

我正在检查iTunes资料库的XML备份中是否存在文件。

在我看来,我们正在处理一些流氓的iTunes-XML编码,这种编码在某些地方搞砸了。我的建议是反过来 - 解码iTunes字符串(首先通过HtmlDecode,然后是UrlDecode),然后将其与您正在寻找的原始字符串进行比较。这应该能够应对iTunes的大多数错误编码。

答案 2 :(得分:2)

一条非常简单的路线:

filepath.Replace("\", "/").Replace("%", "%25").Replace(" ", "%20").Replace("&", "&")

答案 3 :(得分:0)

%20表示空格字符。我知道你想用这个字符串做更多的事情,所以我可以问你喜欢用哪些工具?正则表达式?字符串替换?

答案 4 :(得分:0)

使用Uri.EscapeDataString()静态方法执行此操作。超级容易。