Nsstring *params = @"'Decoded data!'/foo.bar:baz";NSRunAlertPanel( @"Error",[params urlEncoded],@"OK",nil,nil );
这是扩展Nsstring的类别
-(Nsstring *) urlEncoded{ Nsstring *encoded = (Nsstring *)CFURLCreateStringByAddingPercentEscapes( NulL,(CFStringRef)self,NulL,(CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ",kcfStringEnCodingUTF8 ); return encoded;}
所以我第一次跑,我回来了
1606410046ecoded 1606410784ata2270.000000foo.bar0X1.001716P-1042baz
从对话框.
在我再次运行之后立即得到这个
1606410046ecoded 1606410944ata227369374562920703448982951250259562309742470533728899744288431318481119278377104028261651081181287077973859930826299575521579020410425419424562236383226511593137467590082636817579938932512039895040.000000foo.bar0X1.66E6156303225P+771baz
那么如果我再运行它,那么它会回到第一个.真的很奇怪
如果参数设置为@“&”或@“”我只是在对话框中回到“2”(w / o的引号).
还有一种方法可以在警报对话框中显示%符号吗?
谢谢
解决方法 我认为NSAlert正在将%字符解释为用随机数据填充的字符串格式说明符.只是NSLog的输出,它的罚款:%27Decoded%20data%21%27%2Ffoo.bar%3Abaz
此外,您的-urlEncoded类别方法中有内存泄漏.您使用包含Create的CF函数创建字符串,因此您需要释放它.
-(Nsstring *) urlEncoded{ CFStringRef urlString = CFURLCreateStringByAddingPercentEscapes( NulL,kcfStringEnCodingUTF8 ); return [(Nsstring *)urlString autorelease];}总结
以上是内存溢出为你收集整理的用Objective-C URLEncoding一个字符串全部内容,希望文章能够帮你解决用Objective-C URLEncoding一个字符串所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)