如何在可可中确定字符串编码?

时间:2012-05-20 14:12:35

标签: iphone objective-c cocoa encoding

如何确定可可中的字符串编码? 最近我正在研究一个无线电播放器。有时候,id3标签文字出现乱码。

这是我的代码:

CFDictionaryRef audioInfoDictionary;
UInt32 size = sizeof(audioInfoDictionary);
result = AudioFileGetProperty(fileID, kAudioFilePropertyInfoDictionary, &size, &audioInfoDictionary);

ID3信息在audioInfoDictionary中。有时id3不使用utf8编码,标题,艺术家名称都是乱码。

有没有办法确定字符串使用的编码方式?

特别的thx!

1 个答案:

答案 0 :(得分:3)

虽然它是一个NSString对象,但没有特定的编码,因为它保证使用在创建时确定的编码来表示放入其中的内容。请参阅文档的Working With Encodings section

你从哪里获得ID3标签?您“收到”此信息的时间是确定其编码的最佳时间。有关初始值设定项列表,请参阅Creating and Initializing Strings和接下来的几节(用于创建文件和URL)。其中一些允许您设置编码,而另一些则传回(通过引用)编码系统在创建字符串时确定的“最佳猜测”。查找系统报告的猜测的“usedEncoding:”方法。

所有这一切都取决于究竟是什么给你带来了那个字符串。您是从文件(MP3)还是网络服务(网络电台)阅读?如果是后者,服务器的响应应该包含编码,如果 错误,那么除了猜测之外没什么可做的。