Objective-C의 경우 :
NSString *str = ...; // some URL
NSCharacterSet *set = [NSCharacterSet URLHostAllowedCharacterSet];
NSString *result = [str stringByAddingPercentEncodingWithAllowedCharacters:set];
NSUTF8StringEncoding에 대한 집합은 어디에서 찾을 수 있습니까?
백분율 인코딩을 허용하는 6 개의 URL 구성 요소 및 하위 구성 요소에 대해 미리 정의 된 문자 집합이 있습니다. 이러한 문자 집합은에 전달됩니다 -stringByAddingPercentEncodingWithAllowedCharacters:
.
// Predefined character sets for the six URL components and subcomponents which allow percent encoding. These character sets are passed to -stringByAddingPercentEncodingWithAllowedCharacters:.
@interface NSCharacterSet (NSURLUtilities)
+ (NSCharacterSet *)URLUserAllowedCharacterSet;
+ (NSCharacterSet *)URLPasswordAllowedCharacterSet;
+ (NSCharacterSet *)URLHostAllowedCharacterSet;
+ (NSCharacterSet *)URLPathAllowedCharacterSet;
+ (NSCharacterSet *)URLQueryAllowedCharacterSet;
+ (NSCharacterSet *)URLFragmentAllowedCharacterSet;
@end
지원 중단 메시지는 다음과 같습니다.
대신 항상 권장 UTF-8 인코딩 을 사용하고 각 URL 구성 요소 또는 하위 구성 요소에 유효한 문자에 대한 규칙이 다르기 때문에 특정 URL 구성 요소 또는 하위 구성 요소를 인코딩하는 stringByAddingPercentEncodingWithAllowedCharacters (_ :)를 대신 사용하십시오 .
따라서 적절한 NSCharacterSet
인수 만 제공하면 됩니다. 다행히도 URL의 URLHostAllowedCharacterSet
경우 다음과 같이 사용할 수 있는 매우 편리한 클래스 메서드 가 있습니다.
NSCharacterSet *set = [NSCharacterSet URLHostAllowedCharacterSet];
그러나 다음 사항에 유의하십시오.
이 메서드는 전체 URL 문자열이 아닌 URL 구성 요소 또는 하위 구성 요소 문자열을 퍼센트 인코딩하기위한 것입니다.
NSURLComponents
퍼센트 인코딩을 처리 할 수 있는를 사용하는 것이 좋습니다 .