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

使用Google Chrome开发版或是beta版

Google的Chrome是个非常不错的浏览器,界面简洁,javascript执行速度非常快(完全体会不到,对我来说瓶颈是网速,相对常用firefox来说js速度方面到没什么很明显的提升),但是功能还是有限。一般常用的都是稳定版,但是为了体验最新的进步不少人也有安装beta版的,为了体验最新最新的改变还以安装开发版的(相比beta可能更不稳定,bug更多)。现在有了 Google Chrome Channel Changer , 就可以随时在3个版本之间换来换去。 选好版本,点击“Update”就可以关闭这个Channel Changer了。然后再去你的chrome中选择“About Google Chrome”,就会自动的检查下载安装新版本。提示安装完成后重启一下chrome就行了。 用了1个月左右的chrome,还是换回firefox,最小字体是个问题,字体平滑也完全没用,看惯雅黑,点阵字体完全看不惯哦。

PSP 三国无双 大蛇传 人物图片

PSP三国无双 大蛇传 人物图片(Google Picasa相册) 现在还不全,太多了。。。(2008-03-23) 搞完了,体力活啊。(2008-04-20) 暂时放弃吧,那个空间到期很久了,忘了更新这里了。什么时候找到地方放再跟新。(2009-04-29) 上传到Google Picasa(2009-09-25)