2012-01-01 58 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); 

我希望这有助于。

相关问题