23 objective-c nsurl ios
我们如何在URL中传递字符串Mr.X和Mr.Y.
我试过这个,但这个人做了所有的字符,但是&符号.
[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]
Run Code Online (Sandbox Code Playgroud)
Hol*_*ick 36
甚至更短:
@implementation NSString (Escaping)
- (NSString*)stringWithPercentEscape {
return [(NSString *) CFURLCreateStringByAddingPercentEscapes(
NULL,
(CFStringRef)[[self mutableCopy] autorelease],
NULL,
CFSTR("?=,!$&'()*+;@?\n\"<>#\t :/"),
kCFStringEncodingUTF8) autorelease];
}
@end
Run Code Online (Sandbox Code Playgroud)
在这里它再次作为ARC符合内联函数帮助器:
#if __has_feature(objc_arc)
static inline NSString *hxURLEscape(NSString *v) {
static CFStringRef _hxURLEscapeChars = CFSTR("?=,!$&'()*+;@?\r\n\"<>#\t :/");
return ((__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(
NULL,
(__bridge CFStringRef)[v mutableCopy],
NULL,
_hxURLEscapeChars,
kCFStringEncodingUTF8));
}
#endif
Run Code Online (Sandbox Code Playgroud)
Rog*_*Rog 32
-stringByAddingPercentEscapesUsingEncoding:不执行完整的转义编码.您应该使用手动添加编码-replaceOccurrencesOfString:withString:
这是一个完整的列表(镜像Gamecat的列表),最初建议在https://devforums.apple.com/message/15674#15674.正如尼克指出的那样,这很昂贵,所以不要只考虑完整列表而不考虑你逃避的真正要求.
NSMutableString *escaped = [actionString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[escaped replaceOccurrencesOfString:@"$" withString:@"%24" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"&" withString:@"%26" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"+" withString:@"%2B" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"," withString:@"%2C" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"/" withString:@"%2F" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@":" withString:@"%3A" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@";" withString:@"%3B" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"=" withString:@"%3D" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"?" withString:@"%3F" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"@" withString:@"%40" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@" " withString:@"%20" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"\t" withString:@"%09" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"#" withString:@"%23" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"<" withString:@"%3C" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@">" withString:@"%3E" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"\"" withString:@"%22" options:NSCaseInsensitiveSearch range:wholeString];
[escaped replaceOccurrencesOfString:@"\n" withString:@"%0A" options:NSCaseInsensitiveSearch range:wholeString];
Run Code Online (Sandbox Code Playgroud)
此代码肯定会对您的URL进行哈希处理.
使用 %26 作为 url 转义。
其他逃生方式:
$ %24
& %26
+ %2B
, %2C
/ %2F
: %3A
; %3B
= %3D
? %3F
@ %40
Run Code Online (Sandbox Code Playgroud)
Tac*_*667 -2
在 URL 中,& 符号是受保护的关键字,表示包含查询字符串变量。您不能将其作为值本身的一部分放入。您需要将其更改为其他内容。
以下是 StackOverflow 上提出的同一问题的链接:ASP.Net URLEncode &s for use in Query String
| 归档时间: |
|
| 查看次数: |
19074 次 |
| 最近记录: |