0

我正在将带有 & 符号的文本发布回 Web 服务,这导致我的 Objective C 应用程序出现问题。

我必须以某种方式逃避它。

有什么想法吗?...我现在对 Objective C 和 iPhone 编程很陌生...

4

2 回答 2

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];

输出将是这样的:

非编码:这是我的值,其中包含 &。
URL 编码:This%20is%20my%20value%20which%20contains%20%26%20in%20it。
于 2013-08-07T05:11:20.963 回答
0

我认为您正在发布类似“bread & butter”的内容,然后您在 Web 服务中看到的内容缺少 & 并且可能后面的几个字符甚至是一个奇怪的字符。尝试在上面的示例中将 & 替换为&amp;So,您将发布“bread &amp;butter”。如果您尝试发送 < 或 > 和其他一些字符,您会发现类似的问题。如果你谷歌 NSString HTML 转义,你会发现可以帮助你做到这一点的 Objective C 类别。

对于像 www.mysite/foo&bar.html 这样的 URL,您可能希望将它们 & 替换为 %26 所以 www.mysite/foo%26bar.html。在查询字符串中也是如此。将 & 替换为 %26

于 2013-08-07T05:04:21.263 回答