我从服务器获取URL并尝试在webview中加载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.
我需要从网址中删除%2520
,%2F
,%3D
和其他非标准字符等字符。任何人都有理由删除此编码
任何帮助将不胜感激
由于
答案 0 :(得分:7)
%2520
只是一个双重编码的空间。对其进行编码,然后获得%20
,对其进行两次编码,然后获得%2520
。它不是“非标准的”,它的编码很差。从理论上讲,没有理由不能用空格替换%2520
,但据我所知,服务器端代码期待双重编码的字符串。
答案 1 :(得分:1)
在处理URL服务器端的代码中,您似乎有一个urlencode()太多,或者urldecode()太少了。
答案 2 :(得分:1)
找到答案。我正在使用iOS的内置功能删除编码。abc = [def stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
我在webview中加载abc。它工作正常。 谢谢大家的回复。
答案 3 :(得分:0)
要避免多重编码,请先删除所有编码
_pdfUrl = [ _pdfUrl stringByRemovingPercentEncoding];
_pdfUrl = [_pdfUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];