2014-04-23 31 views
1

我在與使用URL字符串看起來像這樣創建一個NSURL對象的一個​​問題:NSURL轉義字符不工作

」 ...... FEXP = 935648%2C945012%2C901066%2C91 ... 「等等(這只是一個部分 - 完整的網址很長)。

該URL包含許多百分比轉義字符(%2C)。我完全無法使用此URL創建NSURL對象(URL本身是正確的,因爲我可以使用瀏覽器打開它)。致電

[[NSURL alloc] initWithString:url]; 

返回NIL。

只要我通過調用

[url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] 

修改URL我收到有效NSURL對象。

問題是:這個 「有效」 NSURL對象包含無效的URL看起來像這樣:

「...... FEXP = 935648%252C945012%252C901066%225C91 ......」

,你可以請參閱初始百分比轉義字符(%2C)已再次轉義(%252C),這會導致無法打開的URL(再次嘗試使用瀏覽器)。

原始網址由外部工具生成,所以我對其創建機制沒有任何影響。

有沒有人有線索可能是錯的?

+1

如果您在創建NSURL之前調用'stringByRemovingPercentEncoding',它是否工作? '[NSURL URLWithString:[url stringByRemovingPercentEncoding]];' – michaels

+0

我的網址已經被編碼了......你是否再次編碼..試試Michaels評論 – iOSDeveloper

+1

奇怪......只是刪除百分比編碼的字符不起作用。但首先刪除這些字符,並重新添加它們似乎工作......也許有一些東西編碼在我沒有看到的URL中(我已經嘗試過'[url stringByRemovingPercentEncoding]'。 – Alex

回答

3

對我來說似乎有點怪,但以下似乎工作:

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

謝謝你的提示。

+0

好吧,我已刪除該答案。快樂編碼 – iOSDeveloper

+0

它適用於我 –