2012-07-09 49 views
5

我从服务器获取URL并尝试在webview中加载URL。问题是我所得到的url包含非标准字符。网址是:从obj c删除%2520和其他非标准字符

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并从URL其他非标准字符的字符。任何人都有想法删除这种编码。
任何帮助,将不胜感激

感谢

+0

见@Kolink的答案,让您的服务器团队来解决他们向您发送垃圾网址。当您看到'%2F'代替URL的常规部分的'/'时,您知道该URL编码错误。 – 2012-07-09 06:14:06

回答

7

%2520简直是双重编码空间。编码一次,你得到%20,编码两次,你得到%2520。这不是“非标准”,它只是编码不佳。理论上,没有理由不能用一个空格替换%2520,但是我知道服务器端代码是,预期是双重编码的字符串。

1

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

1

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

我正在加载abc在webview.It工作正常。 感谢所有的答复。

0

为避免多次编码,删除任何编码第一

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