iOS:URIの仕様のパーセンテージ符号化と復号化
3220 ワード
リファレンス
URI符号化について
URIの仕様には「:」、「/」、「?」などの予約文字が定義されています.「&」,「=」,「@」,「%」などの文字は,URIにおいても彼の役割を果たす.要求パラメータにURIの書き込み予約文字を表す場合は、%文字の後に16進数の数値で8文字の数値を表す必要があります.
たとえば、":"文字は3 Aで16進数で表されるので、%3 Aで表さなければなりません."/"文字は2 Fで16進数で表されるので、%%2 Fで"/"文字を表す必要があります.
iOSでのアプローチ
iOSでは、URIをstringByAddingPercentEncodingWithAllowedCharacters
で符号化し、stringByRemovingPercentEncoding
で復号することができる.
stringByAddingPercentEncodingWithAllowedCharacters:
stringByRemovingPercentEncoding
例:NSString *urlStr = @"https://www.baidu.com";
urlStr = [urlStr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLUserAllowedCharacterSet]];
NSLog(@" :%@",urlStr);
urlStr = [urlStr stringByRemovingPercentEncoding];
NSLog(@" :%@",urlStr);
印刷結果:
パーセンテージコード:https%3 A%2 F%2 F www.baidu.com復号化:https://www.baidu.com
メソッド定義から、入力パラメータはNSCharacterSet
オブジェクトであることがわかります.- (NSString *)stringByAddingPercentEncodingWithAllowedCharacters:(NSCharacterSet *)allowedCharacters;
具体的なパラメータはNSCharacterSet
の分類でNSURLUtilities
が属性のフォーマットで外部に露出し、私たちはreadonly
しかできません.
iOSでは、URIを
stringByAddingPercentEncodingWithAllowedCharacters
で符号化し、stringByRemovingPercentEncoding
で復号することができる.stringByAddingPercentEncodingWithAllowedCharacters:
stringByRemovingPercentEncoding
例:
NSString *urlStr = @"https://www.baidu.com";
urlStr = [urlStr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLUserAllowedCharacterSet]];
NSLog(@" :%@",urlStr);
urlStr = [urlStr stringByRemovingPercentEncoding];
NSLog(@" :%@",urlStr);
印刷結果:
パーセンテージコード:https%3 A%2 F%2 F www.baidu.com復号化:https://www.baidu.com
メソッド定義から、入力パラメータは
NSCharacterSet
オブジェクトであることがわかります.- (NSString *)stringByAddingPercentEncodingWithAllowedCharacters:(NSCharacterSet *)allowedCharacters;
具体的なパラメータは
NSCharacterSet
の分類でNSURLUtilities
が属性のフォーマットで外部に露出し、私たちはreadonly
しかできません.これにより、第1の
URLUserAllowedCharacterSet
は、全体のURL
に対応する.その他の対応するURL
の各部分.URLの構成 URL
は、インターネット上の任意のリソースを特定するための手段を提供し、これらのリソースは、異なる方法(HTTP/FT/STMTP)によってアクセスすることができる.いずれにしても、基本的には9つの部分から構成されています.
://:@:/;?#
例:
NSString *urlStr = @"https://www.xxx.com:8888/file/index.html?username=wxx&password=123#1";
NSURL *url = [NSURL URLWithString:urlStr];
NSLog(@"%@",url.scheme);
NSLog(@"%@",url.host);
NSLog(@"%@",url.port);
NSLog(@"%@",url.path);
NSLog(@"%@",url.query);
NSLog(@"%@",url.fragment);
印刷結果:
https www.xxx.com
8888/file/index.html username=wxx&password=123 1