Вот рабочее решение:
Начиная с:
NSString *str = @"MjAxObPitbUgx9C7/bq4yKPAzrfCKLnov/LFzcH2xbTAzCkguPDB/SCw+LDt";
NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:str options:0];
Что вы упустили, так это то, что вы не можете использовать kCFStringEncodingEUC_KR
, то есть CFStringEncodings
с initWithData:encoding:
with ожидает NSStringEncoding
.
Вы можете использовать CFStringConvertEncodingToNSStringEncoding()
для его преобразования:
NSString *result = [[NSString alloc] initWithData:decodedData encoding:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingEUC_KR)];
NSLog(@"result: %@", result);
Вывод:
$>result: 2019년도 학생보호인력(배움터지킴이) 모집 공고
Если вы хотите использовать "изначально kCFStringEncodingEUC_KR
, и все CFDataRef
, CFStringRef
, и затем использовать мост для преобразования CFStringRef
в NSString
:
CFStringRef ref = CFStringCreateWithBytes(nil, [decodedData bytes], [decodedData length], kCFStringEncodingEUC_KR, false);
NSString *result = (__bridge NSString *)ref;
NSLog(@"result: %@", result);
Вывод:
$>result: 2019년도 학생보호인력(배움터지킴이) 모집 공고
Возможно, вам придется внести некоторые изменения, я не очень знаком с CFStringCreateWithBytes()
, проверьте документацию.