我发布带有&符“&”的文字回到Web服务,它导致我的Objective C应用程序出现问题。
我必须以某种方式逃脱它。
有什么想法吗?......我现在对Objective C和iPhone编程很陌生......
答案 0 :(得分:1)
当您尝试传递URL
中的某些值并且值包含用于分隔&
中的参数的URL
时会发生这种情况,因此Web服务器会将内容转换为部件遇到&
而不是将其作为单个连续值
您可以对字符串进行url编码以解决问题。
NSString *valueToSubmit = @"This is my value which contains & in it.";
NSString *urlEncodedString = (NSString*)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL,(CFStringRef)valueToSubmit,NULL,(CFStringRef)@"!*'();:@&=+$,/?%#[]",kCFStringEncodingUTF8));
NSLog(@"Non-Encoded: %@ \n Encoded: %@",valueToSubmit,urlEncodedString];
输出将是这样的:
Non-Encoded: This is my value which contains & in it. URL Encoded: This%20is%20my%20value%20which%20contains%20%26%20in%20it.
答案 1 :(得分:0)
我认为你发布了类似“面包和黄油”之类的内容,那么你在网络服务中看到的内容就是错过了&可能还有几个字符,甚至是一个奇怪的角色。尝试更换&与&
所以在上面的示例中,您将发布“bread &
butter”。如果您尝试发送<或者>和其他一些人物。如果你使用谷歌NSString HTML转义,你会发现可以帮助你做到这一点的Objective C类别。
对于像www.mysite / foo& bar.html这样的网址,您可能希望将其替换为&与%26所以www.mysite / foo%26bar.html。在查询字符串中也是如此。更换&与%26