首页 > 解决方案 > 如何解码base64 NSString(使用euc-kr).. TT

问题描述

我有字符串

这个字符串是用 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];

但结果是一样的.. encoding:kCFStringEncodingMacKorean 的结果不是韩文。;;;;;

标签: iosobjective-cnsstring

解决方案


这是一个有效的解决方案:

从...开始:

NSString *str = @"MjAxObPitbUgx9C7/bq4yKPAzrfCKLnov/LFzcH2xbTAzCkguPDB/SCw+LDt";
NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:str options:0];

你错过的是你不能真正使用kCFStringEncodingEUC_KRwhich is a CFStringEncodingswithinitWithData:encoding:期望 a NSStringEncoding

您可以使用CFStringConvertEncodingToNSStringEncoding()它来转换它:

NSString *result = [[NSString alloc] initWithData:decodedData encoding:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingEUC_KR)];
NSLog(@"result: %@", result);

输出:

$>result: 2019년도 학생보호인력(배움터지킴이) 모집 공고

如果您想“本机”使用kCFStringEncodingEUC_KR, 和所有CFDataRef, CFStringRef, 并使用桥接然后转换CFStringRefNSString:

CFStringRef ref = CFStringCreateWithBytes(nil, [decodedData bytes], [decodedData length], kCFStringEncodingEUC_KR, false);
NSString *result = (__bridge NSString *)ref;
NSLog(@"result: %@", result);

输出:

$>result: 2019년도 학생보호인력(배움터지킴이) 모집 공고

您可能需要做一些更改,我不太熟悉CFStringCreateWithBytes(),请查看文档。


推荐阅读