【问题标题】:NSURL with string %20带有字符串 %20 的 NSURL
【发布时间】:2013-12-15 12:07:50
【问题描述】:

我希望网页的网址看起来像这样:

foo.com/l=english&se=local&incEN=false&q=bob%20bob&

这里的问题是当我说

urlString = @"foo.com/l=english&se=local&incEN=false&q=bob%20bob&";
[self initWithURL:[NSURL URLWithString:urlString]];

我希望网站 url 字符串为“foo.com/l=english&se=local&incEN=false&q=bob%20bob&”,但它给了我:

foo.com/l=english&se=local&incEN=false&q=bob22520bob&

作为 NSURL 的字符串。

如何解决这个问题,以便将所需的字符串设置为 NSURL 字符串?

【问题讨论】:

  • URL中是否应该有?(用于查询参数)?
  • Sho 的回答应该有效。如果您想在字符串中手动使用 % ,请在其位置写入 %%:stackoverflow.com/a/739707/653513
  • @rokjarc Sho 的回答对我不起作用。请看我对他帖子的评论。问题是我正在使用 NSString stringWithFormat 创建 urlString ......这会有什么不同吗?
  • 尝试用+替换%20
  • @Jenox 成功了!谢谢。

标签: ios nsstring


【解决方案1】:

试试这个功能:

NSString* urlString = @"foo.com/l=english&se=local&incEN=false&q=bob bob&"
NSString* urlEscaped [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

不需要在 URL 中添加 %20,在下一个函数中转义即可。

【讨论】:

  • 不,这是给我的:foo.com/l=english&se=local&incEN=false&q=bob2ob& 我不想要。我希望在 nsurl 之后出现“%”符号
【解决方案2】:

尝试将%20 替换为+
我也经常在 URL 中看到编码为纯 + 的空格。

【讨论】:

    【解决方案3】:

    也许是网址

    urlString = @"foo.com/l=english&se=local&incEN=false&q=bob%20bob&";
    

    已经使用某种空间编码为“%20”,因此使用“stringByAddingPercentEscapesUsingEncoding”方法将再次对其进行编码,这将导致空间为“%22520”。此外,如果是,编码方法可能无法正常工作http 不是 https。对我来说,使用 https 而不是 http 并使用 NSUTF8StringEncoding 对 url 字符串进行编码。

    【讨论】:

      猜你喜欢
      • 2011-08-10
      • 1970-01-01
      • 1970-01-01
      • 2014-09-29
      • 1970-01-01
      • 2012-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多