关于读入中英文混合的文本文件

ddbb12 2005-11-08 01:52:23
各位高手:

在下有个问题,想写程序读入一个文本文件,其中包含中文、英文还有一些特殊字符。程序如下:




执行结果却有些问题。原文件长度为2091467,但是最后取字串长度之后得到的结果为1803018。后面的内容不知道哪里去了??

请高手协助,或者指条明路。。。。。。谢谢!!只要能完整读取内容就成!!谢谢谢谢

...全文
240 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ddbb12 2005-11-08
  • 打赏
  • 举报
回复
谢谢两位。

狼行天下兄,按照您的建议作了修改之后,返回的字符串长度为0,不知何故。
northwolves 2005-11-08
  • 打赏
  • 举报
回复
Function ReadText(filename As String) As String

Dim mybyte() As Byte
Open filename For Binary As #1
ReDim mybyte(Lof(1))
Get #1, , mybyte
Close #1
ReadText = StrConv(mybyte, vbUnicode)
End Function
ddbb12 2005-11-08
  • 打赏
  • 举报
回复
读入的文件内容会发生改变,是不是还是由于编码的问题??这种情况下如何解决??
lijunfeng 2005-11-08
  • 打赏
  • 举报
回复
你的字符串长度比文件长度短应该是正常的. 因为在文件里一个中文是两个长度,VB中Len计算字符串长度时将中文也视为一个长度.
ddbb12 2005-11-08
  • 打赏
  • 举报
回复
BTW,直接用line input输入的时候,只能读到文件的30多行左右,不知道什么毛病。

ddbb12 2005-11-08
  • 打赏
  • 举报
回复
奇怪,这些代码放在上边的帖子里就发不出去。。。。郁闷
ddbb12 2005-11-08
  • 打赏
  • 举报
回复
Private Sub cmdOpenIP_Click()
Dim tartget As String
comd1open.Filter = "Data file(*.dat)|*.dat"
comd1open.ShowOpen
Target = ReadText(comd1open.filename)
txtTest.Text = Len(Target)
End Sub

Function ReadText(filename As String) As String
Dim mlen As Long
mlen = FileLen(filename)
Dim mybyte() As Byte
ReDim mybyte(mlen - 1)
Open filename For Binary As #1
Get #1, , mybyte
Close #1
ReadText = StrConv(mybyte, vbUnicode)
End Function
lijunfeng 2005-11-08
  • 打赏
  • 举报
回复
你是怎么读取的,源码贴出来看一下才知道哪里有问题.

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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