黑马程序员技术交流社区

标题: 从外部文件导入到sql数据库错误 [打印本页]

作者: 刘建法    时间: 2012-4-26 15:28
标题: 从外部文件导入到sql数据库错误
本帖最后由 刘建法 于 2012-4-27 09:14 编辑

老师在讲的时候全部用的是英文字符,我用了一下中文的字符 ,导致了程序出错,在那个streamreader中怎么读中文字符?
作者: 黄燕京    时间: 2012-4-26 16:36
读一定长的文件。包含中文和英文。   
如用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个字节,但是读出来后不能是乱码.
作者: 刘建法    时间: 2012-4-26 17:25
黄燕京 发表于 2012-4-26 16:36
读一定长的文件。包含中文和英文。   
如用ASCII读,位数对了。一个汉字是两个字符。也就是读一个汉字过去 ...

老兄:
我把这个text文件全部是中文输入法下输入的怎么用 Encoding.default还是不行呀!输出来的还是���这个呀 !照上面这样说 我上面这样是可以的呀
作者: 张林春    时间: 2012-4-26 20:42
StreamReader sr = new StreamReader("c:\\1.txt", Encoding.Default);  
如果这样还不行话。。你看一下你的那个文件是什么编码格试的。
你可以按我说的试一下。
StreamReader sr = new StreamReader("c:\\1.txt",Encoding.GetEncoding("gb123"));
GB123是标准的。。应该没有什么问题。。
作者: 王志龙    时间: 2012-4-26 21:12
是不是乱码了啊
加一个Encoding.Default




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2