最近买了新的笔记本。Mac OS X的系统,并且将以前本子上的一些中文歌考了上去。在用iTune和Cog播放的时候都没能正确的把歌名识别出来。今天在网上查了查MP3格式的资料。一般来说,这些播放器都只会读取ID3V1的信息,所以我尝试自己写一个小东西来查看ID3V1的信息。实际上,如果你使用的Window XP的话,只需要查看MP3文件的属性,就能很容易的看到ID3V1的信息。 MP3文件,可以简单的看作是个二进制的文件,而一个标准MP3文件的最后128个字节最是它存放ID3V1信息的地方,我使用下面的代码来读取: FileStream stream = System.IO.File.OpenRead(@_filePath); byte[] buf = new byte[128]; stream.Seek(-128, SeekOrigin.End); stream.Read(buf, 0, 128); 开始我使用 ASCIIEncoding 来解析byte[]。发现所有的ID3V1为英文的都能很容易解析出来。但是对中文没有办法。换为 UnicodeEncoding 以后,中文、英文都乱了。直到我发现 System.Text.Encoding.Default 可以很好的解析英文和中文的。我的OS是英文版的Window XP,但是“Language for no-Unicode programs”让我改为了“Chinese(PRC)”。在实际运行中 System.Text.Encoding.Default 的值实际上是: System.Text.DBCSCodePageEncoding 但是在MSDN没有找到和 System.Text.DBCSCodePageEncoding 相关的资料。大概查了一下,只知道DBCS是个包含ANSI,gb2312,GBK的亚洲字符的编码格式。 如果有碰到同样问题的朋友不妨试一下。