Objective c StringByAddingPercents转义使用编码不转义“&&引用;
我正在使用Objective c StringByAddingPercents转义使用编码不转义“&&引用;,objective-c,nsstring,Objective C,Nsstring,我正在使用stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding将数据传递给php脚本。问题是如果字段的文本中有字符'&',比如说:'someone&cars',则只保存文本“someone”,而'&'之后的所有内容都不会保存 为了创建字符串,我使用了[NSString stringWithFormat:,因此我在表单中有5个字段,如果我使用StringByReplacingCorrectionsOfString:@“&”,
stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding
将数据传递给php脚本。问题是如果字段的文本中有字符'&',比如说:'someone&cars',则只保存文本“someone”,而'&'之后的所有内容都不会保存
为了创建字符串,我使用了[NSString stringWithFormat:
,因此我在表单中有5个字段,如果我使用StringByReplacingCorrectionsOfString:@“&”
,它所做的是替换整个字符串,而不仅仅是替换文本字段中的字符“&”,因此我得到了错误
有什么想法吗?不幸的是,
stringByAddingPercentEscapesUsingEncoding:
实际上并没有转义所有必需的URL字符
相反,您可以使用较低级别的CoreFoundation功能:
(NSString *)CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)myString, NULL, (CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ", CFStringConvertNSStringEncodingToEncoding(encoding));
或者,使用ARC时:
CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL, (__bridge CFStringRef)myString, NULL, (__bridge CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ", CFStringConvertNSStringEncodingToEncoding(encoding)));
有关使用此函数的
NSString
类别的示例,请参见。不幸的是,stringByAddingPercentEscapesUsingEncoding:
实际上并没有转义所有必需的URL字符
相反,您可以使用较低级别的CoreFoundation功能:
(NSString *)CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)myString, NULL, (CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ", CFStringConvertNSStringEncodingToEncoding(encoding));
或者,使用ARC时:
CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL, (__bridge CFStringRef)myString, NULL, (__bridge CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ", CFStringConvertNSStringEncodingToEncoding(encoding)));
有关使用此函数的
NSString
上的类别示例,请参见。如果您希望明确允许自己编码的内容,请使用string添加PercentEncoding with AllowedCharacters
。我使用的是base64之后的版本,所以这个很好用
NSString *charactersToEscape = @"!*'();:@&=+$,/?%#[]\" ";
NSCharacterSet *customEncodingSet = [[NSCharacterSet characterSetWithCharactersInString:charactersToEscape] invertedSet];
NSString *url = [NSString stringWithFormat:@"%@", @"http://www.test.com/more/test.html?name=john&age=28"];
NSString *encodedUrl = [url stringByAddingPercentEncodingWithAllowedCharacters:customEncodingSet];
如果您想特别允许自己编码的内容,请使用
stringByAddingPercentEncodingWithAllowedCharacters
。我使用的是base64之后的版本,所以这个很好用
NSString *charactersToEscape = @"!*'();:@&=+$,/?%#[]\" ";
NSCharacterSet *customEncodingSet = [[NSCharacterSet characterSetWithCharactersInString:charactersToEscape] invertedSet];
NSString *url = [NSString stringWithFormat:@"%@", @"http://www.test.com/more/test.html?name=john&age=28"];
NSString *encodedUrl = [url stringByAddingPercentEncodingWithAllowedCharacters:customEncodingSet];
ASCII码是否可能重复?这是什么?1980? 祷告经文中永远不要说“是格伦特·苏格伦,是斯潘·布卢滕·布卢亨”;-)严肃地说:您可能应该使用UTF8而不是ASCII。:)好吧,从现在起我肯定会使用,但这并不能解决问题。ASCII是否可能重复?这是什么?1980? 祷告经文中永远不要说“是格伦特·苏格伦,是斯潘·布卢滕·布卢亨”;-)严肃地说:您可能应该使用UTF8而不是ASCII。:)好吧,从现在起我肯定会使用,但它不能解决问题。