logo

English

이곳의 프로그래밍관련 정보와 소스는 마음대로 활용하셔도 좋습니다. 다만 쓰시기 전에 통보 정도는 해주시는 것이 예의 일것 같습니다. 질문이나 오류 수정은 siseong@gmail.com 으로 주세요. 감사합니다.

iOS - Objective - C, URL 인코딩과 디코딩

by digipine posted Nov 01, 2017
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print

URL 인코딩과 디코딩 

웹과 어플을 연동을 하다 보면 한글과 특수문자 등으로 인해서 UTF-8 로 인코딩 해서 데이터를 넘겨야 하는 경우가 많이 있습니다.

NSString *urlString = [NSString stringWithFormat:@"http://www.naver.com/loginService?method=joinMember&userid=%@&passwd=%@&confirm_passwd=%@&nickname=%@",email_tf.text,password_tf0.text,password_tf1.text,nickName_tf.text];


NSString *escapedUrl = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];

[request setURL:[NSURL URLWithString:escapedUrl]];

[request setHTTPMethod:@"GET"];

NSURLConnection *joinConnection = [NSURLConnection connectionWithRequest:request delegate:self];

 

위 코드를 보면 네이버에 회원가입을 한다고 가정을 하고서 이메일과 패스워드, 패스워드 확인, 닉네임을 웹에 전달을 하는 문자열 입니다.

그렇데 닉네임이 한글일 수 있니 문자열을 UTF8 로 변환해서 전송 합니다.


NSString *escapedUrl = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

바로 위 코드가 UTF8 로 변환을 하는 것인데요.

문제는 바로 인코딩이 아니고 디코딩인 것입니다.

 

보통 웹에서 데이터를 받을 때 xml 데이터로 받던가 웹페이지 결과값으로 받아서 처리를 하게 되는데

웹뷰를 사용해서 어플을 만들게 되면 기존 서비스를 그대로 쓰는 경우가 많습니다.

예를 들어

 

http://www.naver.com/loginService?nickname=절대천황

 
이렇게 파라미터 값으로 데이터를 주는 경우가 있는데

요개 Objective-C 에서 골치 거리가 되는 것이죠.

 

웹상에서는 이걸 보통 바로 전달을 안 하고 UTF8 로 인코딩 해서 전달을 하게 되는데

Objective-C 상에서는 전혀 알 수 없는 URL 로 표시 됩니다.

http://www.naver.com/loginService?nickname=%EC%A0%88%EB%8C%80%EC%B2%9C%ED%99%A9


이렇게 글자가 나오게 됩니다.

그럼 위의 값을 바로 전달을 받으면 상관이 없는데 Objective-C 는 파라미터 값을 받을 수 없기 때문에

URL 주소를 스트링으로 받아와서 그 주소를 짤라서 데이터 값을 처리 해야 하는데

저 스트링을 한글로 변환 시킬 디코딩 방법을 찾는게 쉽지 않더군요.


그런데

NSString *escapeStr = [urlPath stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

이렇게 urlPath 스트링으로 받아서 처리하니 디코딩이 되더군요.


List of Articles
No. Subject Author Date Views
55 [Swift 3] HTTP Request 사용하기, 클래스 소스코드 및 사용법 digipine 2017.11.02 9668
54 OSX - Screen Serial Terminal - OSX에서 시리얼 터미널 사용하기 digipine 2017.11.03 6868
53 [iOS/Objective-C] __weak, __block 사용법 digipine 2021.02.16 5508
52 [Swift 3] TCPIP Socket 통신 클래스 소스 코드 및 사용법 digipine 2017.11.02 4647
51 [Objective-C] NSOperation과 NSOperationQueue를 사용하는 방법 - 설명 및 예제 엉뚱도마뱀 2018.03.14 4191
50 [iOS/macOS] 사설 인증서를 사용한 SSL HTTPS 통신 시 우회처리 digipine 2021.07.06 2959
49 [macOS] Sandbox 정책 극복기 Accessing Security Scoped Resource 1 file digipine 2017.11.02 1776
48 [Objective C] NSString 앞뒤 공백 문자 및 줄바꿈 문자 제거 digipine 2017.11.02 1655
» iOS - Objective - C, URL 인코딩과 디코딩 digipine 2017.11.01 1653
46 [swfit 4] 스위프트 Swift 동시성 동기화 정리 엉뚱도마뱀 2018.09.06 1315
45 [MacOS, Swift] 스크롤뷰, NSScrollView 사용법 엉뚱도마뱀 2018.11.01 1264
44 OSX 사파리 최신 버전 폰트 변경하기 file digipine 2017.11.03 1224
43 iOS - UITextField의 Placeholder Color 색 변경하기 file digipine 2017.11.02 1152
42 [iOS, MacOS] Singleton 싱글톤 패턴 사용하기 2 digipine 2017.11.02 1080
41 MacOS mysql 비밀번호 분실 시 재설정하기 digipine 2017.11.14 1028
40 [iOS, MacOS] NSNotification, NSNotificationCenter 사용법 digipine 2017.11.02 1026
39 [swift 4] 변경 사항 정리 file 엉뚱도마뱀 2018.07.23 1019
38 iOS - Objective C 정규식 사용법 2 digipine 2017.11.01 961
37 iOS - BLE 장치용 ANCS Library for ANCS digipine 2017.11.02 949
36 iOS - Openssl 빌드하기 digipine 2017.11.01 946
Board Pagination Prev 1 2 3 Next
/ 3