Skip to main content

C#中的字符编码

最近买了新的笔记本。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的亚洲字符的编码格式。


如果有碰到同样问题的朋友不妨试一下。

Comments

Popular posts from this blog

Python中的self

习惯上,任何Python类方法的第一个参数(对当前实例d的引用)都叫做self。这个参数扮演着C++或Java中的保留字this的角色,但self在Python中并不是一个保留字,它只是一个命名习惯。虽然如此,也请除了self之外不要使用其它的名字,这是一个非常坚固的习惯。 出自:《Dive Into Python》

Google Notebook整合了Google 书签

FF上一直装有Google笔记本的插件,一直没有到一面上去看,今天无意点到。发现多了个叫“Unfiled”的记事本,记得自己并未建过这么个东西,进去一看才发现,其实就是我的Google书签: 并且右下角也多了“Labels”,且与我Google书签中的相同。 其实人家的右上角的“ New features! ”里说得很清楚: Integration with Google Bookmarks Notebook is now integrated with Google Bookmarks. Your bookmarks will show up as a special Unfiled notebook, making Google Notebook a single place to collect and organize interesting web pages. To publish and collaborate, just drag and drop bookmarks into notebooks.