【发布时间】:2014-06-08 08:28:51
【问题描述】:
我在使用如下所示的 URL 字符串创建 NSURL 对象时遇到问题:
"... fexp=935648%2C945012%2C901066%2C91 ..." 等等(这只是一部分 - 完整的 URL 很长)。
URL 包含许多百分比转义字符 (%2C)。我绝对不能用这个 URL 创建一个 NSURL 对象(URL 本身是正确的,因为我可以使用浏览器打开它)。对
的调用[[NSURL alloc] initWithString:url];
返回 NIL。
只要我通过调用修改 url
[url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]
我收到一个有效的 NSURL 对象。
问题是:这个“有效”的 NSURL 对象包含一个无效的 URL,如下所示:
"... fexp=935648%252C945012%252C901066%225C91 ..."
如您所见,最初的百分比转义字符 (%2C) 已再次转义 (%252C),导致 URL 无法打开(再次使用浏览器尝试)。
原始网址是由外部工具生成的,因此我对其创建机制没有任何影响。
有人知道可能出了什么问题吗?
【问题讨论】:
-
如果你在创建 NSURL 之前调用
stringByRemovingPercentEncoding,它会起作用吗?[NSURL URLWithString:[url stringByRemovingPercentEncoding]]; -
我的 url 已经被编码了......你又在编码什么......试试 Michaels 评论
-
奇怪...仅删除百分比编码字符不起作用。但首先删除这些字符并重新添加它们似乎可行......也许在我没有看到的 URL 中编码了一些东西(我已经尝试过
[url stringByRemovingPercentEncoding]。 -
是的...您必须删除编码,然后您必须再次对网址进行编码才能工作...请发布您的答案,以便对其他人有所帮助
标签: objective-c nsurl