用input函数读取中文的问题

highlevel 2004-08-31 05:03:13
我想用input函数读取一个包含中文的文本文件代码如下
Function ReadTextFileContents(filename As String) As String
Dim FileNum As Integer
Dim isOpen As Boolean
On Error GoTo Error_Handler

FileNum = FreeFile()
Open filename For Input As #FileNum
isOpen = True
ReadTextFileContents = Input(LOF(FileNum) , FileNum)
Close #FileNum

Error_Handler:
If isOpen Then
Close #FileNum
End If

If Err Then
MsgBox Err.Description + "--please check the file:" + filename
End If
End Function

结果发现如果文件中包含中文就会出现第一个参数越界的错误,调试发现LOF(FileNum)的返回值把中文作为2来处理,但是读取的时候却好象作为一个字符,所以会越界,请问有什么好的解决方法,谢谢!
...全文
266 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
51365133 2004-09-01
  • 打赏
  • 举报
回复
用2进制吧,用input不行的
rainstormmaster 2004-09-01
  • 打赏
  • 举报
回复
呵呵,我的意见是直接利用2进制方式打开文件,用get获取数据,不用input或inputb的原因是:如果文本文件中含有chr(0),input或inputb就会产生错误
northwolves 2004-08-31
  • 打赏
  • 举报
回复
应该没问题了,试试:

Function ReadTextFileContents(filename As String) As String
Dim FileNum As Integer
Dim isOpen As Boolean
On Error GoTo Error_Handler

FileNum = FreeFile()
Open filename For Input As #FileNum
isOpen = True
ReadTextFileContents = InputB(LOF(FileNum), FileNum)'--------->input->inputb
Close #FileNum
ReadTextFileContents = StrConv(ReadTextFileContents, vbUnicode)'-------->add this line
Error_Handler:
If isOpen Then
Close #FileNum
End If

If Err Then
MsgBox Err.Description + "--please check the file:" + filename
End If
End Function
rainstormmaster 2004-08-31
  • 打赏
  • 举报
回复
//我用INPUT函数读的没有乱码,程序如下:

你和楼主讨论的不是同一个问题,楼主想解决的是一次性读出数据的问题,而不是用循环,这时候input函数存在问题
davysnet 2004-08-31
  • 打赏
  • 举报
回复
我用INPUT函数读的没有乱码,程序如下:

Dim str, txtFile As String

txtFile = App.Path & "\readme.txt"
Open txtFile For Input As #1
Do While Not EOF(1)
str = Input(1, 1)
RichTextBox1.Text = RichTextBox1.Text + str
Loop
Close #1
rainstormmaster 2004-08-31
  • 打赏
  • 举报
回复
http://www.china-askpro.com/msg1/qa51.shtml
jam021 2004-08-31
  • 打赏
  • 举报
回复
为什么要用input来读文件呢?有许多更好的方法呀
chtlover 2004-08-31
  • 打赏
  • 举报
回复
关注ing
highlevel 2004-08-31
  • 打赏
  • 举报
回复
to of123():
用InputB函数读出来的中文都是乱码怎么处理呢?
of123 2004-08-31
  • 打赏
  • 举报
回复
ReadTextFileContents = InputB(LOF(FileNum) , FileNum)

7,759

社区成员

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

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