mp3文件使用的ID3分为ID3v1 和 ID3v2两个版本。ID3v2又分1,2,3,4这4个版本。据说支持最广泛的是ID3v2-3这个版本。
ID3v1保存在mp3尾部,固定为128字节,以TAG这三个字符开头。格式如下
char Header[3]; /*标签头必须是"TAG"否则认为没有标签*/
char Title[30]; /*标题*/
char Artist[30]; /*作者*/
char Album[30]; /*专集*/
char Year[4]; /*出品年代*/
char Comment[30]; /*备注*/
char Genre; /*类型*/
ID3v1中保存的字符串多采用ANSI编码。因此根据系统语言的不同所使用的编码是不同的。如果是简体中文系统使用的是GB2312,繁体中文就是BIG5,日文操作系统下面又是JIS编码。所以,如果MP3中仅有ID3v1的信息,那在不同语言的操作系统中的播放器里面显示的信息会是乱码。或者在windows里面正常的在linux系统下面就会是乱码。因为linux系统下面一般使用UTF-8编码。
ID3v2-3保存在MP3文件的开头。有标签头和若干标签帧。参考ID3v2-3的标准,在文本标签帧中,在代表帧size的字节后面可以跟一个字节来说明这个帧是使用ISO-8859-1编码还是使用Unicode编码的。如果是使用ISO-8859-1则这个字节为0,如果是使用Unicode则这个字节为1. 使用Unicode Bom ( 0xFF 0xFE ) 开头和两个0 ( 0x00 0x00 )作为结尾。
所以如果要保存中文信息,最好使用ID3v2-3保存Unicode字符串。这样MP3在各个系统下面播放就不会出现乱码的问题了。
本文介绍了MP3文件中的ID3v1和ID3v2版本,特别是ID3v2-3,它在文件开头并允许指定编码。ID3v1的编码依赖于操作系统,导致跨平台可能出现乱码;而ID3v2-3支持ISO-8859-1和Unicode,使用Unicode可避免乱码问题,确保在不同系统中正确显示中文信息。
6万+

被折叠的 条评论
为什么被折叠?



