前些日子,在用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格式成为通用的格式,而别的提供商却并不买它的帐
