A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘建法 中级黑马   /  2012-4-26 15:28  /  3350 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘建法 于 2012-4-27 09:14 编辑

老师在讲的时候全部用的是英文字符,我用了一下中文的字符 ,导致了程序出错,在那个streamreader中怎么读中文字符?

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

4 个回复

倒序浏览
读一定长的文件。包含中文和英文。   
如用ASCII读,位数对了。一个汉字是两个字符。也就是读一个汉字过去两位,而汉字都成了问号“?”;   
StreamReader sr=new StreamReader("1.txt",Encoding.ASCII);   

如果用default或是gb2312读,汉字算一个字符,读一个汉字过去一位,这样定长字符串就会出现位数偏差。   
StreamReader sr=new StreamReader("1.txt",Encoding.Default);   

如何使位数即是两位,又能是汉字??   

比如1个txt文件.里面有汉字和有英文,我只知道前面200个字符(这里的200个字符是汉字算2个字符的)是我需要的内容我想通过StreamReader.Read(buffer,0,200)读出来,如何操作?  
主要是是用uncode读会把汉字算算成1个字符,而用ascci读会把汉字读出来是乱码.我希望能在读取的时候让汉字算2个字节,但是读出来后不能是乱码.

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
黄燕京 发表于 2012-4-26 16:36
读一定长的文件。包含中文和英文。   
如用ASCII读,位数对了。一个汉字是两个字符。也就是读一个汉字过去 ...

老兄:
我把这个text文件全部是中文输入法下输入的怎么用 Encoding.default还是不行呀!输出来的还是���这个呀 !照上面这样说 我上面这样是可以的呀
回复 使用道具 举报
StreamReader sr = new StreamReader("c:\\1.txt", Encoding.Default);  
如果这样还不行话。。你看一下你的那个文件是什么编码格试的。
你可以按我说的试一下。
StreamReader sr = new StreamReader("c:\\1.txt",Encoding.GetEncoding("gb123"));
GB123是标准的。。应该没有什么问题。。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
是不是乱码了啊
加一个Encoding.Default

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马