我正在从服务器获取一个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];