티스토리 뷰
[iOS Error] stringByRemovingPercentEncoding deprecated issue!! complete!!
썩소천사 2018. 4. 4. 14:29javascript로 호출되는 문자열을 컨버팅하는 부분이 deprecated되어 수정.
모든 NSCharacterSet을 이용해봤지만 답을 찾지 못했고...
결국 열심히 검색한 stringByRemovingPercentEncoding 를 사용하면 된다는 답을 찾음!!
[Code 1]
// 기존 코드
NSString *jsonString = [[[urlString componentsSeparatedByString:@"jscall:"] lastObject]
stringByReplacingPercentEscapesUsingEncoding:NSStringEncodingConversionAllowLossy];
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
// 변경한 코드
NSData *jsonData = [[[[urlString componentsSeparatedByString:@"jscall:"] lastObject] stringByRemovingPercentEncoding] dataUsingEncoding:NSUTF8StringEncoding];
참조 : https://stackoverflow.com/questions/18491973/how-to-remove-these-characters-from-nsstring
[Code 2]
// 기존 코드
[@"" stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
// 변경한 코드
[@"" stringByRemovingPercentEncoding];
추가로 NSCharacterSet을 이용해 변환되는 문자열은 다음과 같음.
URLFragmentAllowedCharacterSet "#%<>[\]^`{|}
URLHostAllowedCharacterSet "#%/<>?@\^`{|}
URLPasswordAllowedCharacterSet "#%/:<>?@[\]^`{|}
URLPathAllowedCharacterSet "#%;<>?[\]^`{|}
URLQueryAllowedCharacterSet "#%<>[\]^`{|}
URLUserAllowedCharacterSet "#%/:<>?@[\]^`
커스텀 하고 싶을경우는 다음과 같음. 서버에 URL을 형태를 전송할 때 사용될듯하여 남김
NSCharacterSet *URLFullCharacterSet = [[NSCharacterSet characterSetWithCharactersInString:@" \"#%/:<>?@[\\]^`{|}"] invertedSet];
->IxOTg0LTEyLTI1In19%2522%257D
NSCharacterSet *URLFullCharacterSet = [NSCharacterSet characterSetWithCharactersInString:@" \"#%/:<>?@[\\]^`{|}"];
->%%37%42%%32%32%63%69%73%52%65%73%75%6C%74%%32%32
참조 : https://stackoverflow.com/questions/8086584/objective-c-and-swift-url-encoding