正在从obj c中的URL中删除%2520和其他非标准字符


Removing %2520 and other nonstandard characters from URL in obj c

我正在从服务器获取一个URL,并试图在webview中加载该URL。问题是我得到的url包含非标准字符。URL为:

https//p-r3.test.abc.com:443%2Ftablet%2Fjsp%2Fgift%2Fipad%2Fgifter%2FgitGiftList.jsp%3FregId%3D74500002%26filterBy%3DviewAll%26pageId%3DourGifty%26sort%3Dcategory%26groupBy%3Dcategory%26view%3Dlist%26categoryId%3D%26addCat%3Dcat100540004&title=re%20-&imgurl=https%3A%2F%2Fm-r3-testy.tr.com%3A443%2Ftablet%2Fimages%2Ft_Full.jpg%3Fwid%3D300%26hei%3D300.

我需要从URL中删除%2520%2F%3D等非标准字符。任何人都有删除此编码的想法
如有任何帮助,将不胜感激

感谢

%2520只是一个双编码空间。编码一次就得到%20,编码两次就得到了%2520。它不是"非标准的",只是编码不好。理论上,没有理由不能用空格替换%2520,但据我所知,服务器端代码需要双编码字符串。

找到了答案。我正在使用iOS的内置功能删除编码。abc = [def stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

我正在webview中加载abc。它运行良好。感谢大家的回复。

在处理URL服务器端的代码中,urlencode()似乎太多,或者urldecode()太少。

为了避免多重编码,请先删除任何编码

   _pdfUrl = [ _pdfUrl stringByRemovingPercentEncoding];        
   _pdfUrl = [_pdfUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];