- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我对用于百分比转义非法符号的类别方法有疑问。
这是我用于该任务的代码:
@implementation NSString (URLEncoding)
-(NSString *)urlEncodeUsingEncoding:(NSStringEncoding)encoding {
NSString *s = (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)self, NULL, (CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ",CFStringConvertNSStringEncodingToEncoding(encoding));
NSLog(@"S: %@, Self: %@", s, self);
return [s autorelease];
}
@end
当我在没有上述匹配字符串中的任何符号的字符串上运行此方法时,该方法运行正常并且相同的字符串返回给我。
例如,如果我有一个像 @"test"
这样的字符串,它将输出:
S: test, Self: test
但是如果我改为使用像 @"test&symbols"
这样的字符串,它将输出:
S: null, Self: test&symbols
因此,使用 CFURLCreateStringByAddingPercentEscapes 似乎有些问题。
现在我想转义诸如 & 之类的符号,因为它们可以出现在用作查询字符串值的字符串中,这会导致查询字符串被误解。
关于这里可能出现的问题有什么想法吗?
提前致谢!/马格纳斯
最佳答案
在发现我的大错之后。
我被告知要自己回答这个问题。
我做错了什么,我没有将 NSStringEncoding
值传递给方法,例如 NSUTF8StringEncoding
但我没有传递 CF 值,例如 kCFStringEncodingUTF8
.
该值通过转换器传递,使其成为导致错误的 CF 值,并且它已经具有正确的类型。
对于给您带来的不便,我们深表歉意。
-马格努斯
关于iphone - CFURLCreateStringByAddingPercentEscapes 返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10497698/
我对用于百分比转义非法符号的类别方法有疑问。 这是我用于该任务的代码: @implementation NSString (URLEncoding) -(NSString *)urlEncodeUsi
我知道 CFURLCreateStringByAddingPercentEscapes 方法在 iOS10 中已被弃用,它建议我使用 stringByAddingPercentEncodingWith
我的音乐播放器应用需要能够通过 REST API 将歌曲、艺术家和专辑名称发送到 Last.fm。为了正确地发布这些值,我需要对它们进行编码,以便它们是 URL 安全的(替换 &、/、+ 等) 我做了
我有以下代码: return (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStrin
我收到了这个警告: 'CFURLCreateStringByAddingPercentEscapes' is deprecated: first deprecated in iOS 9.0 - Use
我是一名优秀的程序员,十分优秀!