Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字符串编码_C#_Encoding - Fatal编程技术网

C# 字符串编码

C# 字符串编码,c#,encoding,C#,Encoding,我正在检查iTunes库的XML备份中是否存在文件 如何更改此字符串 E:\Entertainment\Music\Latin\100%Azucar Celia Cruz&La Sonora Matancera的精华/08 Mi Soncito.mp3 对此 E:/Entertainment/Music/Latin/100%25%20Azucar%20%20%20最好的%20%20Celia%20Cruz%20&;%20La%20Sonora%20Matancera/08%20Mi%20S

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

如何更改此字符串

E:\Entertainment\Music\Latin\100%Azucar Celia Cruz&La Sonora Matancera的精华/08 Mi Soncito.mp3

对此

E:/Entertainment/Music/Latin/100%25%20Azucar%20%20%20最好的%20%20Celia%20Cruz%20&;%20La%20Sonora%20Matancera/08%20Mi%20Soncito.mp3

变化:

  • 空间变为%20
  • 反斜杠变成正斜杠
  • %(百分号)变为%25

  • 看起来有两个不同的东西:

    1) 将反斜杠替换为正斜杠

    2) 应用URI编码

    第一点是显而易见的。对于第二种,您有一些选择,包括
    Uri.EscapeDataString
    Uri.EscapeUriString
    HttpUtility.UrlEncode
    HttpUtility.urlpathcode

    编辑

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


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

    看起来像是两件不同的事情:

    1) 将反斜杠替换为正斜杠

    2) 应用URI编码

    第一点是显而易见的。对于第二种,您有一些选择,包括
    Uri.EscapeDataString
    Uri.EscapeUriString
    HttpUtility.UrlEncode
    HttpUtility.urlpathcode

    编辑

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


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

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

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

    您可以使用
    Uri.EscapeDataString()
    静态方法。超级简单。

    您可以使用
    Uri.EscapeDataString()
    静态方法来实现。超级简单。

    非常简单的路线:

    filepath.Replace(“\”,“/”).Replace(“%”,“%25”).Replace(“,“%20”).Replace(“&“,”&;”)
    一个非常简单的路由:


    filepath.Replace(“\”,“/”).Replace(“%”,“%25”).Replace(“,“%20”).Replace(“&“,”&;”)
    我想我找到了他问题的关键部分。它隐藏在那里,是第一句话,所以没人注意到它。XD

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


    在我看来,我们正在处理一些流氓的iTunesXML编码,这在某种程度上把事情搞砸了。我的建议是反过来——解码iTunes字符串(首先通过HtmlDecode,然后是URLDODCODE),然后将其与您要查找的原始字符串进行比较。这应该能够处理iTunes的大多数错误编码。

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

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



    在我看来,我们正在处理一些流氓的iTunesXML编码,这在某种程度上把事情搞砸了。我的建议是反过来——解码iTunes字符串(首先通过HtmlDecode,然后是URLDODCODE),然后将其与您要查找的原始字符串进行比较。这应该能够处理大多数iTunes的错误编码。

    这正是他要我们做的;)在Tomasz中,URI编码确实将空格替换为
    %20
    ,但它也替换了许多其他字符。这意味着
    String.Replace
    不是一个好的解决方案。至于RegExp,这太过分了。这就是为什么我问他喜欢什么工具,这样我就可以编写正确的代码;]我认为这里的想法是,他希望它工作,所以他要求你选择工具。这就是他要求我们的;)在Tomasz中,URI编码确实将空格替换为
    %20
    ,但它也替换了许多其他字符。这意味着
    String.Replace
    不是一个好的解决方案。至于RegExp,这太过分了。这就是为什么我问他喜欢什么工具,这样我就可以编写正确的代码;]我认为这里的想法是他希望它工作,所以他要求你选择工具。你忘记了
    &
    变成了
    &。这有点奇怪-我希望它变成
    %26
    @Vilx:当你对它进行编码时,它变成
    %26
    。也许你在考虑HTMLEncoding。@Vilx:再看一眼,你是对的。也许字符串也需要进行HTMLEncoded。但是E:是协议吗?如果它是一个URI,它应该是file:///E:/Entertainment/Music/Latin/100%25%20Azucar%20%20The%20Best%20of%20Celia%20Cruz%20&%20La%20Sonora%20MA/08%20Mi%20Soncito。mp3@Caspar:你说得对。为了将其加载到
    Uri
    ,我们可能需要使用“file:”协议作为前缀。在这种情况下,看起来我们希望在完成处理后删除它,否则我们将加载它并逐个提取片段。实际上,我在想后者。你忘了
    &
    变成了
    &。这有点奇怪-我希望它变成
    %26
    @Vilx:当你对它进行编码时,它变成
    %26
    。也许你在考虑HTMLEncoding。@Vilx:再看一眼,你是对的。也许字符串也需要进行HTMLEncoded。但是E:是协议吗?如果它是一个URI,它应该是file:///E:/Entertainment/Music/Latin/100%25%20Azucar%20%20The%20Best%20of%20Celia%20Cruz%20&%20La%20Sonora%20MA/08%20Mi%20Soncito。mp3@Caspar:你说得对。为了将其加载到
    Uri
    ,我们可能需要使用“file:”协议作为前缀。在本例中,看起来我们希望在完成处理后将其删除,否则我们将加载它并删除它