2013-04-14 54 views
0

我想從我的項目中的一堆mp3文件中獲取ID3標籤。正確編碼iOS中的ID3標籤

AudioFileGetProperty(audioFile, kAudioFilePropertyInfoDictionary, &size, &metadataDictionary); 

如果標籤不包含西里爾符號,則輸出在設備上看起來OK。不過,我有時會值這樣的一個:

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)。

有什麼辦法將這些符號解碼爲可讀形式嗎?我已經試過

NSString* value = [metadataDictionary objectForKey: key]; 
NSData* data = [value dataUsingEncoding: NSASCIIStringEncoding]; 
NSString* string = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding]; 

但結果保持不變。

任何幫助將不勝感激!

[更新]

我傾向於嘗試this SO answer提供瞭解決方案,但是否有其他方法嗎?

回答

1

這是無法將這些符號解碼成可讀的形式:

NSString *value = [metadataDictionary objectForKey:@"artist"]; 
const char *cString = [value cStringUsingEncoding:NSWindowsCP1252StringEncoding]; 
NSString *artist = [NSString stringWithCString:cString encoding:NSWindowsCP1251StringEncoding];