2013-12-15 33 views
0

我想要的任何的網頁的URL看起來是這樣的:NSURL與字符串%20

foo.com/l=english & SE =本地& incEN =假& Q =鮑勃%20bob &

這裏的問題是,當我說

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

我想要的網站URL字符串是「foo.com/l=english & SE =本地& incEN =假& Q =鮑勃%20bob &「,但它給我:

foo.com/l=english & SE =本地& incEN =假& Q = bob22520bob &

爲字符串的NSURL。

我該如何解決這個問題,以便將所需的字符串設置爲NSURL字符串?

+1

如果你在URL中有?(用於查詢參數)? – Wain

+2

Sho的答案應該有效。如果你想在你的字符串中手動使用%寫入%%:http://stackoverflow.com/a/739707/653513 –

+0

@rokjarc Sho的答案對我來說不起作用。請看我對他的帖子的評論。問題是我用NSString stringWithFormat創建urlString ...會有什麼不同嗎? – user2905147

回答

2

試試這個功能:

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

無需在URL中加入%20,只是逃避它在未來的功能。

+0

不,這是給我:foo.com/l=english&se=local&incEN=false&q=bob2ob&我不想。我希望'%'符號在nsurl之後在那裏 – user2905147

1

嘗試用+代替%20
我經常在URL中看到空格編碼爲普通+

0

可能網址

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

已經在使用某種形式的編碼空間爲「%20」,因此,使用「stringByAddingPercentEscapesUsingEncoding」的方法將再次這將導致爲「%22520」空間編碼。如果http不是https,編碼方法可能無法正常工作。對於我使用https而不是http並使用NSUTF8StringEncoding編碼url字符串。