如何确定可可中的字符串编码? 最近我正在研究一个无线电播放器。有时候,id3标签文字出现乱码。
这是我的代码:
CFDictionaryRef audioInfoDictionary;
UInt32 size = sizeof(audioInfoDictionary);
result = AudioFileGetProperty(fileID, kAudioFilePropertyInfoDictionary, &size, &audioInfoDictionary);
ID3信息在audioInfoDictionary中。有时id3不使用utf8编码,标题,艺术家名称都是乱码。
有没有办法确定字符串使用的编码方式?
特别的thx!
答案 0 :(得分:3)
虽然它是一个NSString对象,但没有特定的编码,因为它保证使用在创建时确定的编码来表示放入其中的内容。请参阅文档的Working With Encodings section。
你从哪里获得ID3标签?您“收到”此信息的时间是确定其编码的最佳时间。有关初始值设定项列表,请参阅Creating and Initializing Strings和接下来的几节(用于创建文件和URL)。其中一些允许您设置编码,而另一些则传回(通过引用)编码系统在创建字符串时确定的“最佳猜测”。查找系统报告的猜测的“usedEncoding:”方法。
所有这一切都取决于究竟是什么给你带来了那个字符串。您是从文件(MP3)还是网络服务(网络电台)阅读?如果是后者,服务器的响应应该包含编码,如果 错误,那么除了猜测之外没什么可做的。