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
56 Core Audio를 사용하여 macOS에서 Audio를 Capture하는 코드 digipine 2024.04.19 3
55 macOS Daemon 관련 시스템 폴더 목록 lizard2019 2024.03.08 26
54 [macOS, iOS] 개발자 정보 확인하는 명령어 digipine 2023.03.23 164
53 iOS - Socket Nagle 알고리듬 OFF digipine 2017.11.01 208
52 iOS - Thread Loop 내에서 UI 업데이트 방법 digipine 2017.11.01 211
51 iOS - Objective-C 남아있는 메모리 공간 확인 방법 digipine 2017.11.01 215
50 Firebase 'GoogleUtilities/GULURLSessionDataResponse.h' file not found Error Fix lizard2019 2023.07.04 216
49 iOS - NSString 와 NSData 간의 데이터 상호 변환 digipine 2017.11.01 250
48 iOS - Objective-C Callback for C++ digipine 2017.11.01 266
47 [macOS] 현재 사용 중인(열려있는) 포트 확인하고 Close 하기 digipine 2022.10.24 270
46 iOS - Query string을 Decode 하는 소스 digipine 2017.11.01 327
45 iOS - NSURLConnection로 다중 다운로드 구현 digipine 2017.11.01 333
44 iOS , MacOS, iPhone용 GZipStream class 구현하기 digipine 2017.11.01 358
43 Concurrent vs Serial DispatchQueue: Concurrency in Swift explained lizard2019 2021.04.16 416
42 iOS,OSX - CFSocket 사용법 digipine 2017.11.01 444
41 Apple AppStore App Review 시 Reject 피하기 위한 방법 digipine 2017.11.02 447
40 iOS - Objective - C 정규식 사용하기 digipine 2017.11.01 470
39 [iOS] 개발자를 위한 iOS 15의 새로운 기능 file digipine 2021.11.04 498
38 iOS - View 이동 전환 하기 총정리 digipine 2017.11.01 537
37 [iOS] Audio Session Setting digipine 2021.11.26 548
Board Pagination Prev 1 2 3 Next
/ 3