적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

Swift iOS 앱 개발/Swift

[Swift iOS] 한글 포함된 URL 인코딩하는 법 + url 디코딩

hongssup_ 2021. 9. 1. 11:54
반응형

한글이 포함된 url string으로 URL 컨버팅을 해줄 경우, nil 값이 반환되는 문제가 발생했다.

URL의 string: 은 영문, 숫자와 특정 문자만 인식 가능하고, 한글, 띄어쓰기 등은 인식하지 못한다고 한다. 

따라서 한글이 포함되어있는 url String을 따로 인코딩해주는 작업이 필요하다. 

let urlStr = "http://홍썹.kr"
let encodedStr = urlStr.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!
let url = URL(string: encodedStr)!

CharcteterSet types for URL Encoding 애플문서 참고

 

서버에서 url의 파라미터로 값을 받아오는 경우도 있는데, 파라미터 값이 한글일 경우 자동으로 인코딩 되어 깨져서 온다. 

그걸 다시 디코딩해서 한글 값으로 받아오려면 .removingPercentEncoding 해주면 된다. 

let encodedString = "%%ED%85%8C%EC%8A%A4%ED%8A%B8%20%EC%9E%85%EB%8B%88%EB%8B%A4"
encodedString.removingPercentEncoding	//테스트입니다.

 

 

이렇게 따로 써도 되고 다음과 같이 String에  extension으로 함수를 만들어주어 사용할 수도 있다. 

extension String
{
    func encodeUrl() -> String?
    {
        return self.addingPercentEncoding( withAllowedCharacters: .urlQueryAllowed)
    }
    func decodeUrl() -> String?
    {
        return self.removingPercentEncoding
    }
}

 

참고 : StackOverflow

728x90
반응형