日期:2009-06-24  浏览次数:20465 次

前些日子,在用VB.NET写自己的视频点播站点时,出现了一个让我很是生气的问题,由于用RealPlayer播放的视频通过REALSERVER播放,因此我建立了REALSERVER,但是RM格式文件如果想进行剪辑或编辑,类似于MEDIA提供的ASX文件一样,它提供了RAM和SMIL文件的格式,其实就是纯粹的文本,该文本中包含了播放的路径如rtsp://.....rm以及开始播放时间、结束播放时间等信息,我利用文件读写IO接口去写,写成smil文件格式,但是,英文没有任何问题,写成中文就出了问题,乱码!
    我检查了web.config文件中后发现我的选择是GB2312啊,没有问题。怎么回事呢?后来我发现web.config不控制文件读写部分功能。
于是查了MSDN,发现在StreamWriter对象中有一个Encoding方法,引起了我的注意,后来终于把问题解决了,下面是部分代码:

Dim f As New StreamWriter(Server.MapPath("tmpword.smil"), False, System.Text.Encoding.GetEncoding("GB2312"), 512)

这样是简便的写法,直接在New的时候写参数,或者用f.Encoding
其中,Server.MapPath("tmpword.smil")自然就是要写入文件的路径,False部分是用来表明是否保留原先的内容,如果True则保留,新的内容写入无效,如果False则覆盖原先的内容,System.Text.Encoding.GetEncoding("GB2312"), 是要得到需要用的编码格式,默认的编码格式是UTF-8,所以这里要写明我们要用到的GB2312,512是写入缓存的大小。

    简单吧,千万不要被写入.TXT文件中文部分没问题所迷惑,因为微软想让它的UTF8格式成为通用的格式,而别的提供商却并不买它的帐