我正在将带有 & 符号的文本发布回 Web 服务,这导致我的 Objective C 应用程序出现问题。
我必须以某种方式逃避它。
有什么想法吗?...我现在对 Objective C 和 iPhone 编程很陌生...
我正在将带有 & 符号的文本发布回 Web 服务,这导致我的 Objective C 应用程序出现问题。
我必须以某种方式逃避它。
有什么想法吗?...我现在对 Objective C 和 iPhone 编程很陌生...
当您尝试在 中传递一些值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];
输出将是这样的:
非编码:这是我的值,其中包含 &。 URL 编码:This%20is%20my%20value%20which%20contains%20%26%20in%20it。
我认为您正在发布类似“bread & butter”的内容,然后您在 Web 服务中看到的内容缺少 & 并且可能后面的几个字符甚至是一个奇怪的字符。尝试在上面的示例中将 & 替换为&
So,您将发布“bread &
butter”。如果您尝试发送 < 或 > 和其他一些字符,您会发现类似的问题。如果你谷歌 NSString HTML 转义,你会发现可以帮助你做到这一点的 Objective C 类别。
对于像 www.mysite/foo&bar.html 这样的 URL,您可能希望将它们 & 替换为 %26 所以 www.mysite/foo%26bar.html。在查询字符串中也是如此。将 & 替换为 %26