问题描述
我想从我的项目一堆MP3文件得到ID3标签。
I'm trying to get ID3 tags from a bunch of mp3 files in my project.
AudioFileGetProperty(audioFile, kAudioFilePropertyInfoDictionary, &size, &metadataDictionary);
如果标签不包含西里尔符号,输出看起来在设备上确定。不过我有时会收到类似这样的值:
If the tag doesn't contain cyrillic symbols, the output looks OK on the device. However I sometimes get values like this one:
album = "\U00ce\U00f2\U00ea\U00f0\U00fb\U00f2\U00ee\U00e5 \U00d0\U00e0\U00e4\U00e8\U00ee 102.5FM";
"approximate duration in seconds" = "260.623";
和它导致扭曲的符号显示()
and it leads to distorted symbols display (http://d.pr/i/X9wG).
有什么方法脱code这些符号成可读的形式?我已经试过
Is there any way to decode these symbols into a readable form? I've already tried
NSString* value = [metadataDictionary objectForKey: key];
NSData* data = [value dataUsingEncoding: NSASCIIStringEncoding];
NSString* string = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
但结果保持不变。
but the result stays the same.
任何帮助将大大AP preciated!
Any help will be greatly appreciated!
[更新]
我倾向于尝试在这种SO回答,但是否有其他方法吗?
I tend to try a solution provided in this SO answer, but are there any other ways?
推荐答案
这是一种取消code这些符号成可读的形式:
That's way to decode these symbols into a readable form:
NSString *value = [metadataDictionary objectForKey:@"artist"];
const char *cString = [value cStringUsingEncoding:NSWindowsCP1252StringEncoding];
NSString *artist = [NSString stringWithCString:cString encoding:NSWindowsCP1251StringEncoding];
这篇关于正确的编码为ID3标签iOS中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!