如何解码base64 NSString(使用euc-kr).. T.T

时间:2019-01-29 09:34:23

标签: ios objective-c nsstring

我有字符串

此字符串使用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的结果不是韩文。;;;;;

1 个答案:

答案 0 :(得分:0)

这是一个可行的解决方案:

开始于:

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

您错过的是,您不能真正使用kCFStringEncodingEUC_KRCFStringEncodings并期望initWithData:encoding:的{​​{1}}。

您可以使用NSStringEncoding进行转换:

CFStringConvertEncodingToNSStringEncoding()

输出:

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

如果您想“本地”使用$>result: 2019년도 학생보호인력(배움터지킴이) 모집 공고 以及所有kCFStringEncodingEUC_KRCFDataRef,并使用网桥,然后将CFStringRef转换为{{1} }:

CFStringRef

输出:

NSString

您可能需要进行一些更改,我对CFStringRef ref = CFStringCreateWithBytes(nil, [decodedData bytes], [decodedData length], kCFStringEncodingEUC_KR, false); NSString *result = (__bridge NSString *)ref; NSLog(@"result: %@", result); 不太了解,请查看文档。