正确编码iOS中的ID3标签
我想在我的项目中从一堆mp3文件中获取ID3标签。
AudioFileGetProperty(audioFile, kAudioFilePropertyInfoDictionary, &size, &metadataDictionary);
如果标记不包含西里尔符号,则输出在设备上看起来正常。 但是我有时会得到像这样的值:
album = "\U00ce\U00f2\U00ea\U00f0\U00fb\U00f2\U00ee\U00e5 \U00d0\U00e0\U00e4\U00e8\U00ee 102.5FM"; "approximate duration in seconds" = "260.623";
它导致扭曲的符号显示( http://d.pr/i/X9wG )。
有没有办法将这些符号解码为可读forms? 我已经试过了
NSString* value = [metadataDictionary objectForKey: key]; NSData* data = [value dataUsingEncoding: NSASCIIStringEncoding]; NSString* string = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
但结果保持不变。
任何帮助将不胜感激!
[UPDATE]
我倾向于尝试在这个SO答案中提供的解决方案,但还有其他方法吗?
这是将这些符号解码为可读forms的方法:
NSString *value = [metadataDictionary objectForKey:@"artist"]; const char *cString = [value cStringUsingEncoding:NSWindowsCP1252StringEncoding]; NSString *artist = [NSString stringWithCString:cString encoding:NSWindowsCP1251StringEncoding];