как декодировать base64 NSString (используя euc-kr) .. TT - PullRequest
0 голосов
/ 29 января 2019

У меня есть строка

эта строка закодирована с помощью euc-kr ..

Я пытаюсь этот код

NSString *str = MjAxObPitbUgx9C7/bq4yKPAzrfCKLnov/LFzcH2xbTAzCkguPDB/SCw+LDt

NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:str options:0];

NSString *decodedString = [[NSString alloc] initWithData:decodedData encoding:kCFStringEncodingEUC_KR];

, но результат равен нулю ..

что не так ..?и я пытаюсь

NSString *decodedString = [[NSString alloc] initWithData:decodedData encoding:kCFStringEncodingDOSKorean];

и

NSString *decodedString = [[NSString alloc] initWithData:decodedData encoding:kCFStringEncodingMacKorean];

, но результат тот же .. кодировка: kCFStringEncodingMacKorean результат не корейский. ;;;;;

1 Ответ

0 голосов
/ 29 января 2019

Вот рабочее решение:

Начиная с:

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(), проверьте документацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...