특수문자, 한글 등을 url로 표현할 때, URI 규약(RFC3986) 에서 문제없이 표현하는 목적
변환해야 하는 문자의 16진수값 앞에 퍼센트를 붙임
특수문자(변환해야 하는 문자)로 보는 범위가 Host, Path, Query 에 따라 살짝 달라짐
Host의 경우 ?도 특수문자에 포함되므로 인코딩되어야 함
extension String {
func urlEncode() -> String? {
return self.addingPercentEncoding(withAllowedCharacters: CharacterSet(charactersIn: "!*'();:@&=+$/?%#[]{}").inverted)
}
func urlDecode() -> String? {
return self.removingPercentEncoding
}
}
한번 인코딩한 URL을 다시 인코딩하면 안됨. 인코딩한 상태로 다시 인코딩됨
왜 allowedCharacters에 (기본 지원이 아니라) 저렇게 수동으로 문자를 넣어야 할까? 조금 자세한 조사가 더 필요함