中英文混合ansi格式文件如何解析

liuzanshui 2008-02-24 08:42:03
本人最近解析一个ansi的中英文混合固定长度格式文件,用steamreader(filename,system.text.encoding.ansi)打开,逐行读出,每行长度一致,取其中的汉字,显示的却是????.
用streamreader(filename,system.text.encoding.getencoding("gb2312")打开 ,逐行读出,取其中的汉字,汉字显示正确,但每行长度却不一致了.
请教一下,有什么办法能将用第一种打开方式读出的每行字符串,再转换成"gb2312"

...全文
54 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
liuzanshui 2008-02-27
调试中一段程序:
Dim sr As StreamReader = New StreamReader(file2, _
System.Text.Encoding.ASCII, False, 512)

line = sr.ReadLine()
MsgBox(line.Length().ToString())
MsgBox(line.Substring(40, 40)) 'addr取地址
MsgBox(line.Substring(163, 10)) 'tel取电话号码

line = sr.ReadLine()
MsgBox(line.Length().ToString())
MsgBox(line.Substring(40, 40)) 'addr取地址
MsgBox(line.Substring(163, 10)) 'tel取电话号码
楼上的,请问这里能附加文件吗,如果不能,可否给个邮箱,以便把数据文件发个EMAIL,谢谢!!!
回复
of123 2008-02-26
看来楼主是将字节数和字符数混淆了。

请详述你的数据格式和操作流程,以便给你实际的解决方案。
回复
liuzanshui 2008-02-25
谢谢各位.我再解释一下:
用记事本打开过,是ansi格式
至于长度吗,用ansi打开时,英文为一个字节,汉字为两个字节,
每行总长度一致.各个字段的位置也是固定的,只是每一个汉字显示为两问号??
用gb2312打开时,英文为一个字节,汉字也视为一个字节,所以每行长度
是变化的.

同时,再提问一个问题,也是同汉字有关的,希望各位大侠不吝赐教
在使用access数据库时,为什么字段中的汉字也只占一个字节的位置?
当汉字占两个字节的位置时,格式是有规律的;一个字节就无法解析了.

回复
smalle 2008-02-24
ANSI最多只能有 256 个字符和标点符号代码,只能保存字母,何来中英混合呢?

对于不同的编码,可以使用以下API进行转换:
WideCharToMultiByte
MultiByteToWideChar
回复
长度怎么不一致了?
回复
你先用winhex等工具来看看源文件是否是gb2312编码格式。
回复
相关推荐
发帖
VB基础类
创建于2007-09-28

7489

社区成员

VB 基础类
申请成为版主
帖子事件
创建了帖子
2008-02-24 08:42
社区公告
暂无公告