티스토리 뷰

반응형

javascript로 호출되는 문자열을 컨버팅하는 부분이 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


반응형
댓글
반응형