URL编码iOS失败中的字符串
-
26-10-2019 - |
题
我正在尝试使用ARC在iOS 5应用中编码一个字符串。
这就是我的方式:
- (NSString *)escape:(NSString *)text
{
return (__bridge NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,
(__bridge CFStringRef)text, NULL,
(CFStringRef)@"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8);
}
然后,我将其称为这样的测试数据:
NSLog([self escape:@"kalel///&&&???"]);
但是我从 NSLog
这是:
kalel0.0000000.0000000.00000022623F0.0000000.000000
那似乎不是正确的,但是无论我无法正确正确
解决方案
您的 escape
功能很好。问题在于您打电话的方式 NSLog
:
escape
产生字符串 kalel%2F%2F%2F%26%26%26%3F%3F%3F
为您的输入。 NSLog
将此字符串解释为格式字符串,并将某些垃圾打印为浮点数 kalel
单词!
你应该始终打电话 NSLog
以字符串常数为第一个参数,例如:
NSLog(@"%@", [self escape:@"kalel///&&&???"]);
PS 您有内存泄漏 escape
- - 你应该 return (__bridge_transfer NSString *)
当您将保留的CF对象转移到目标C空间时。
不隶属于 StackOverflow