【问题标题】:NSURL escaped characters don't workNSURL 转义字符不起作用
【发布时间】: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


【解决方案1】:

对我来说这似乎有点奇怪,但以下似乎可行:

[url stringByRemovingPercentEncoding];
[url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];`

感谢您的提示。

【讨论】:

    猜你喜欢
    • 2013-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-02
    • 2015-01-22
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多