求教StreamReader编码问题

niss 2012-11-20 03:02:26
我通过SreamReader逐行读txt文本文件,发现其中有一行读不全,可是在UltraEdit里面显示的是一行,我拷贝到文本文件中就变成了两行,而且有个黑框换行,但是用UltraEdit打开还是一行,没看出有什么问题,怎么回事啊

主要的原因在于,我用SqlBulkCopy将文本文件导入Sql2008,发现出错,然后调试发现中间有一行读出来用Regex.Split读出的字段少了很多,导致了错误,但是我用bcp导入同样的文本文件却不报错,我怀疑是编码问题,可是又搞不明白,找不出这个字符是什么
...全文
149 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
XBodhi. 2012-11-21
  • 打赏
  • 举报
回复
你在读取前要知道它的编码类型的,比如你用 response 就可以用 response.Charset 得到, 我不知道你的bcp 具体是个什么东西,他的方式是什么样的 如果是 gb2312 你也可以用 Econding.GB2312 或 getCharsets("sdfsdfsdfsdfsdfsdfsd") 总之 你可以自己看下 Encoding 这个类 还有 EncodingGB2312 的形式。
niss 2012-11-20
  • 打赏
  • 举报
回复
只能用邪门外道来解决了
niss 2012-11-20
  • 打赏
  • 举报
回复
找到了,中间夹杂了一个0D,这是一个回车符,一般情况下是0A0D表示一条记录结束,郁闷,这不能让StreamReader自定义换行符吗? bcp能够指定行分隔符和列分隔符,看样子不能用StreamReader来读文件了,大家有高招吗?
niss 2012-11-20
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
C# code?1StreamReader reader = new StreamReader("c:\\temp\\1.txt",Encoding.Default); Encoding.Default可以改
我用的是GB2312,我想知道,bcp能导入,可是我没有在bcp里特别指定编码,那他是怎么识别的了的,他用的是什么编码
XBodhi. 2012-11-20
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
C# code?1StreamReader reader = new StreamReader("c:\\temp\\1.txt",Encoding.Default); Encoding.Default可以改
bdmh 2012-11-20
  • 打赏
  • 举报
回复
StreamReader reader = new StreamReader("c:\\temp\\1.txt",Encoding.Default);
Encoding.Default可以改

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧