代码之家  ›  专栏  ›  技术社区  ›  Raj More

字符串编码

  •  1
  • Raj More  · 技术社区  · 14 年前

    我正在检查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 回复  |  直到 14 年前
        1
  •  2
  •   Aaron D    14 年前

    一条非常简单的路线:

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

        2
  •  7
  •   Steven Sudit    14 年前

    看起来有两件事:

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

    2)应用URI编码。

    第一个是显而易见的。第二,你有一些选择,包括 Uri.EscapeDataString , Uri.EscapeUriString , HttpUtility.UrlEncode HttpUtility.UrlPathEncode .

    编辑

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

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

        3
  •  4
  •   Vilx-    14 年前

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

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

    在我看来,我们正在处理一些流氓的iTunesXML编码,这些编码在这一行的某个地方有点混乱。我的建议是反过来——解码iTunes字符串(首先通过htmldecode,然后通过urldecode),然后将其与您要查找的原始字符串进行比较。这应该能够应付大多数iTunes的错误编码。

        4
  •  0
  •   Tomasz Kowalczyk    14 年前

    %20表示空格字符。我知道您想用这个字符串做更多的事情,所以我可以问一下您更喜欢使用什么工具吗?正则表达式?字符串替换?

        5
  •  0
  •   Jeff LaFay    14 年前

    你这样做 Uri.EscapeDataString() 静态法。超级容易。