objective-c – NSString stringByReplacingPercentEscapesUsingEncoding不起作用

我需要从Nsstring获取url字符串.我做以下事情:
Nsstring * str = [Nsstring stringWithString:@"i@gmail.com"];

    Nsstring * eStr = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    NSLog(@"%@",eStr);

结果是i@gmail.com.但我需要i@gmail.com.用NSASCIIStringEncoding替换NSUTF8StringEncoding没有帮助.

解决方法

你使用的是错误方法.这恰恰相反,翻译百分比
逃避他们的角色.你可能想用
stringByAddingPercentEscapesUsingEncoding :.
Nsstring *str  = @"i@gmail.com";
Nsstring *eStr =
    [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

除此之外,认情况下看起来@字符不会被转义.然后,
正如上述方法的文档所指出的那样,您需要使用
CoreFoundation实现你想要的.

Nsstring *str  = @"i@gmail.com";

CFStringRef eStr = CFURLCreateStringByAddingPercentEscapes(
    kcfAllocatorDefault,(CFStringRef)str,NULL,(CFStringRef)@"@",kcfStringEncodingUTF8
);

NSLog(@"%@",eStr);

CFRelease(eStr);

请查看documentation以了解有关所用功能的更多信息如何使其符合您的需求.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...