Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- UITableView
- CustomCode
- issecuretextentry
- 위클리챌린지
- programmers
- SwiftGen
- JSON
- Custom PageViewController
- pbxgroup
- parse
- IOS
- Xcode
- 정보처리기사
- 프로그래머스
- 정보처리기사 실기
- JSONParser
- 정보처리기사 실기 요약본
- RealmSwift
- Codable
- 2018 KAKAO BLIND RECRUITMENT
- cocoapods
- pbxfilesystemsynchronizedrootgroup
- dynamic height
- JSONSerialization
- PageViewController
- swift
- Pod
- 티스토리챌린지
- storybaord
- Decodable
Archives
- Today
- Total
iOS 개발일기
[Swift] String.addingPercentEncoding() 특수문자 인코딩하기 본문
스위프트에서는 URL에 한글또는 특수문자가 포함되면 인코딩을 통해서 값을 변환한 다음 보내주어야 합니다.
한글을 변환하는데 도움을 주는 함수가 addingPercentEncoding() 입니다.
한글만 사용하게 된다면 문제가 없지만
특수문자도 같이 사용하게 된다면 이야기가 달라집니다.
예를 들어,
let text: String = "@# $&'"
test.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed)
이 결과를 프린트 해본다면
%ED%8A%B9%EC%88%98%20%EB%AC%B8%EC%9E%90%3A%20@%23%20$&\'
@#과 공백은 변환되지만
$&'은 같은 특수문자인데도 변환이 되지 않는 것을 확인할 수 있습니다.
이렇게 된다면 통신을 할 때 문제가 발생할 수 있기 때문에 문제가 될 특수문자를 추가하여 변환을 할 수 있습니다.
extension CharacterSet {
static let customUrlPathAllowed: CharacterSet = {
let specialCharacters = "!@#$%^&*();:'<>[](){}" //특수문자 범위는 임의로 변경 가능합니다.
var allowed: CharacterSet = .urlPathAllowed
allowed.remove(charactersIn: specialCharacters)
return allowed
}()
}
특수문자를 변환할 수 있도록 CharacterSet에서 Char로 정해진 특수문자를 지워주게 된다면 특수문자도 변환이 된다.
let text: String = "@# $&'"
test.addingPercentEncoding(withAllowedCharacters: .customerUrlPathAllowed)
출력한다면
%ED%8A%B9%EC%88%98%20%EB%AC%B8%EC%9E%90%3A%20%40%23%20%24%26%27
변환되지 않던 특수문자도 변환되어서 출력되는 것을 확인할 수 있다.
'iOS > Swift' 카테고리의 다른 글
[Swift] JSONParser - JSONSerialization (0) | 2022.03.16 |
---|---|
[Swift] JSONParser - Decodable(2) (0) | 2022.03.15 |
[Swift] JSONParser - Decodable(1) (0) | 2022.03.14 |
[Swift] iOS 15, UINavigationBar barTintColor 적용 방법 (0) | 2021.09.28 |
[Swift] 스토리보드없이 코드로 rootViewController를 설정하는 방법 (0) | 2020.04.08 |