【问题标题】:Correct encoding for ID3 Tags in iOSiOS 中 ID3 标签的正确编码
【发布时间】:2013-04-14 17:14:28
【问题描述】:

我正在尝试从我的项目中的一堆 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)。

有没有办法将这些符号解码成可读的形式?我已经试过了

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

但结果保持不变。

任何帮助将不胜感激!

[更新]

我倾向于尝试this SO answer提供的解决方案,但还有其他方法吗?

【问题讨论】:

    标签: iphone ios audio encoding id3-tag


    【解决方案1】:

    这是将这些符号解码为可读形式的方法:

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

    【讨论】:

      猜你喜欢
      • 2012-12-19
      • 2011-08-31
      • 1970-01-01
      • 2013-08-20
      • 1970-01-01
      • 1970-01-01
      • 2017-02-01
      • 2012-05-03
      • 1970-01-01
      相关资源
      最近更新 更多