mp3文件使用的ID3分为ID3v1 和 ID3v2两个版本。ID3v2又分1,2,3,4这4个版本。据说支持最广泛的是ID3v2-3这个版本。
ID3v1保存在mp3尾部,固定为128字节,以TAG这三个字符开头。格式如下
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在各个系统下面播放就不会出现乱码的问题了。