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 Apple AppStore App Review 시 Reject 피하기 위한 방법 digipine 2017.11.02 447
54 Concurrent vs Serial DispatchQueue: Concurrency in Swift explained lizard2019 2021.04.16 415
53 Firebase 'GoogleUtilities/GULURLSessionDataResponse.h' file not found Error Fix lizard2019 2023.07.04 184
52 iOS , MacOS, iPhone용 GZipStream class 구현하기 digipine 2017.11.01 357
51 iOS - BLE 장치용 ANCS Library for ANCS digipine 2017.11.02 949
50 iOS - BSD Socket 네트워크 프로그래밍 digipine 2017.11.01 662
49 iOS - NSString 와 NSData 간의 데이터 상호 변환 digipine 2017.11.01 249
48 iOS - NSString의 언어 인코딩 메소드 정리 digipine 2017.11.01 714
47 iOS - NSURLConnection로 다중 다운로드 구현 digipine 2017.11.01 333
46 iOS - Objective - C 정규식 사용하기 digipine 2017.11.01 470
» iOS - Objective - C, URL 인코딩과 디코딩 digipine 2017.11.01 1653
44 iOS - Objective C 정규식 사용법 2 digipine 2017.11.01 961
43 iOS - Objective-C Callback for C++ digipine 2017.11.01 266
42 iOS - Objective-C 남아있는 메모리 공간 확인 방법 digipine 2017.11.01 215
41 iOS - Openssl 빌드하기 digipine 2017.11.01 946
40 iOS - OpenURL으로 HTML에서 어플 실행 digipine 2017.11.01 565
39 iOS - Query string을 Decode 하는 소스 digipine 2017.11.01 327
38 iOS - sizeWithFont 메소드 deprecated와 sizeWithAttributes digipine 2017.11.02 610
37 iOS - Sleep Mode Blocking 방법, 앱실행시 슬립모드 진입 방지 digipine 2017.11.01 572
36 iOS - Socket Nagle 알고리듬 OFF digipine 2017.11.01 208
Board Pagination Prev 1 2 3 Next
/ 3