특수문자(한글등)에 Percent Encoding 을 하는 작업

url 중간에 한글이나 특수 문자가 들어갈 경우, 퍼센트 인코딩(Percent Encoding 이란?)이 필요합니다.

흔히 URL 인코딩 / 디코딩이라고 부르는 것으로 문자의 16진수값 앞에 퍼센트를 붙여서 URI 규약(rfc3986)에서 문제없이 표현하는 목적으로 사용됩니다.

특수문자로 인정하는 범위가 Host, Path, Query 등에 따라서 달라지게 되며, 웹서버등 상황에 맞춰 사용하면 됩니다.
(아래에서는 URLPathAllowedCharacterSet 를 사용했습니다.  Host 를 사용할 경우에는 '?' 까지도 인코딩되게 됩니다.)

 

Swift

func urlEncode() -> String? {
    return self.addingPercentEncoding(withAllowedCharacters: CharacterSet(charactersIn: "!*'();:@&=+$,/?%#[]{} ").inverted)
}
    
func urlDecode() -> String? {
    return self.removingPercentEncoding
}

 

Objective-C

- (NSString *)urlEncode {
    /* Percent 인코딩 범위에 주의, URLHostAllowedCharacterSet 등 범위에 맞춰서 사용.  */
    return [self stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLPathAllowedCharacterSet]];
}

- (NSString *)urlDecode {
    return [self stringByRemovingPercentEncoding];
}

 

+ Recent posts