2012-01-01 60 views

回答

1

一些好的類別已經爲只是做創建的理由,你需要的東西: http://iosdevelopertips.com/networking/a-better-url-encoding-method.html http://www.cocoanetics.com/2009/08/url-encoding/

離開的理由某些字符超出了我...除了說功能的定義是:Returns a representation of the receiver using a given encoding to determine the percent escapes necessary to convert the receiver into a legal URL string.

爲了完全正確,+和&是合法的字符,而一個空格不是。因此,該方法將正確地轉義一個空格,但保留完好無損。

閱讀RFC2396 http://www.ietf.org/rfc/rfc2396.txt - 定義了一組保留和未保留的字符。我的猜測是這些字符都沒有被stringByAddingPercentEscapesUsingEncoding轉義。

+0

現在我只需要幾分鐘時間閱讀該文檔... :) – 2012-03-28 08:17:43

5

使用CFStringRef時,請注意不要在轉換時泄漏內存。這就是我想出的與拉丁字符和其他人一起工作的東西。我用這個來逃避我的參數,而不是整個URL。根據您的使用情況,您可能需要添加或刪除「escapeChars」中的字符

CFStringRef escapeChars = (CFStringRef)@"%;/?¿:@&=$+,[]#!'()*<>¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ \"\n"; 

NSString *encodedString = (__bridge_transfer NSString *) CFURLCreateStringByAddingPercentEscapes(NULL, (__bridge_retained CFStringRef) url, NULL, escapeChars, kCFStringEncodingUTF8); 

我希望這有助於。

相關問題