C# 字符串编码
我正在检查iTunes库的XML备份中是否存在文件 如何更改此字符串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
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
变化:
看起来有两个不同的东西: 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:”协议作为前缀。在本例中,看起来我们希望在完成处理后将其删除,否则我们将加载它并删除它