Ios 如何在URL查询中转义和?
我到处都找过了,在iOS中还没有找到一个明确的答案。我试图在URL查询中避开符号,但是Ios 如何在URL查询中转义和?,ios,swift,Ios,Swift,我到处都找过了,在iOS中还没有找到一个明确的答案。我试图在URL查询中避开符号,但是 stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet()) 没用 作为一个肮脏的工作,我只是用 stringByReplacingOccurrencesOfString("&", withString: "and", options: NSStringCompareO
stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())
没用
作为一个肮脏的工作,我只是用
stringByReplacingOccurrencesOfString("&", withString: "and", options: NSStringCompareOptions.LiteralSearch, range: nil)
虽然这不是最安全的赌注。正确的方法是什么。您可以将其替换为%26。我不清楚为什么
URLQueryAllowedCharacterSet()
没有捕捉到它。如果您不需要支持10.10或iOS 8之前的任何内容,可以将NSURLQueryItem与NSURLComponents一起使用
如果您需要支持较旧版本的OS X或iOS,则可以在以下位置找到最终答案:
根据需要,使用适当的桥接器和桥接器转换铸件
您早期方法的问题是,较旧的NSURL API是设计为。。。好吧,不要说得太过分,错了。API假定您希望同时对整个查询字符串甚至整个URL进行编码,因此它们不使用符号和其他类似的保留字符。当然,这通常不是您在实践中真正想要做的,但它是原始NSURL API的所有行为方式
作为补充说明,如果您试图将结果粘贴到例如HTML属性中,则需要执行上述操作,然后使用HTML实体编码方法对其进行第二次编码。有关第二步的帮助,请参阅。我想下面的代码应该可以工作
NSMutableString * lQueryString = [NSMutableString string];
NSMutableCharacterSet * lQueryAllowedCharacterSet = [[NSMutableCharacterSet alloc]init];
[lQueryAllowedCharacterSet formUnionWithCharacterSet:[NSCharacterSet URLQueryAllowedCharacterSet]];
[lQueryAllowedCharacterSet removeCharactersInString:@"&"];
[lQueryString appendString: [@"SampleQueryValue&" stringByAddingPercentEncodingWithAllowedCharacters: lQueryAllowedCharacterSet]];
NSLog(@"%@",lQueryString);
输出
SampleQueryValue%26
我不确定是否有更多的字符需要从QueryAllowedCharacterSet中删除
理想的方法是
SampleQueryValue%26