Ger*_*eri 17 nsstring urldecode ios percent-encoding
我已经尝试了很多方法,但这个小小的字符串不能被URL解码.
NSString *decoded;
NSString *encoded = @"fields=ID%2CdeviceToken";
decoded = (__bridge NSString*)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(NULL, (CFStringRef)encoded, NULL, NSUTF8StringEncoding);
NSLog(@"decodedString %@", decoded);
Run Code Online (Sandbox Code Playgroud)
上面的代码只是在替换百分比转义后记录相同的(!)字符串.
那里有可靠的解决方案吗?我认为基于某些文档的某种RegEx解决方案可行.有什么建议吗?
rma*_*ddy 32
另一种选择是:
NSString *decoded = [encoded stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
Run Code Online (Sandbox Code Playgroud)
Car*_*zey 17
使用CFSTR("")而不是NULL倒数第二个参数.从CFURL参考:
charactersToLeaveEscaped
其转义序列百分比的字符,例如空格字符的%20,要保持原样.传递NULL以指定不替换百分比转义,或者指定空字符串(CFSTR(""))以指定全部替换.
NSString *encoded = @"fields=ID%2CdeviceToken";
NSString *decoded = (__bridge_transfer NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(NULL, (CFStringRef)encoded, CFSTR(""), kCFStringEncodingUTF8);
NSLog(@"decodedString %@", decoded);
Run Code Online (Sandbox Code Playgroud)
打印:
2013-03-26 21:48:52.559 URLDecoding [28794:303] decodingString fields = ID,deviceToken
Moh*_*sul 14
CFURLCreateStringByReplacingPercentEscapesUsingEncoding在iOS版9.使用过时 stringByRemovingPercentEncoding代替.
NSString *decoded = [encoded stringByRemovingPercentEncoding];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21982 次 |
| 最近记录: |