iOS OC 中文乱码问题
具体显示:
2021\U00c2\U03c0\U00a5\U00cb\U03a9\U00d8\U00cb\U00eb\U00f3\U00ca\U00f9\U00ea\U00ca\U00f1\U00f4
错误显示:"2021Âπ¥ËΩØËëóÊùêÊñô"
正确显示:"2021年软著材料"
解决办法是先找到原有文本的编码,进行转化。寻找编码格式的代码如下:
const char * byte = NULL;
NSArray *encodeArray = @[@(NSASCIIStringEncoding),@(NSNEXTSTEPStringEncoding),@(NSJapaneseEUCStringEncoding),@(NSUTF8StringEncoding),@(NSISOLatin1StringEncoding),@(NSSymbolStringEncoding),@(NSNonLossyASCIIStringEncoding),@(NSShiftJISStringEncoding),@(NSISOLatin2StringEncoding),@(NSUnicodeStringEncoding),@(NSWindowsCP1251StringEncoding),@(NSWindowsCP1252StringEncoding),@(NSWindowsCP1253StringEncoding),@(NSWindowsCP1254StringEncoding),@(NSWindowsCP1250StringEncoding),@(NSISO2022JPStringEncoding),@(NSMacOSRomanStringEncoding),@(NSUTF16StringEncoding),@(NSUTF16BigEndianStringEncoding),@(NSUTF16LittleEndianStringEncoding),@(NSUTF32StringEncoding),@(NSUTF32BigEndianStringEncoding),@(NSUTF32LittleEndianStringEncoding)];
for (NSNumber *num in encodeArray) {
NSStringEncoding encode = num.unsignedIntegerValue;
byte = [s cStringUsingEncoding:encode];
if(byte != NULL){
NSString *str = [[NSString alloc]initWithCString:byte encoding:NSUTF8StringEncoding];
NSLog(@"encode=======%@\n%@",@(encode),str);
}
}
技术应用在 《悦览播放器》中,可在App Store中搜索查看。