- 注册时间
- 2011-3-6
- 最后登录
- 1970-1-1
该用户从未签到
|
就是有这么一个文件 里面包括英文和日文 编码是Shift-JIS 我用VB.net要把这个文件写进一个字符串数组(是做词法分析用) 就是把每个单词做为一个String 存到 句子(line,str)这样一个二维数组。
我用的方法:
r = IO.File.OpenRead(strIN)
r.Seek(i, IO.SeekOrigin.Begin)
s = r.ReadByte
然后让 word = word + Chr(s)
目前读英文没问题。 但是读中文 和 日文的时候,源文件中的日文或者中文部分 完全乱码。
请问怎么解决呢,我也试过ChrW() 还是乱码。
源码如下:
sub AA(ByVal strIN, ByVal strOUT)
Dim r As System.IO.Stream '读流
Dim w As System.IO.StreamWriter '写流
Dim s As Byte '字符串
Dim word As String '词法,单词
Dim fl As Long '文件长度
Dim i As UInteger '文件指针
Dim 句(50000, 20) As String '词法分析用数组,核心
Dim 行 = 1
Dim 词 = 1
Dim x = 1 '暂存变量
Dim y = 1 '暂存变量
fl = FileLen(strIN) '取文件长度
w = IO.File.AppendText(strOUT)
r = IO.File.OpenRead(strIN)
word = ""
Do Until i = fl
r.Seek(i, IO.SeekOrigin.Begin)
s = r.ReadByte '顺序读取文件
If Chr(s) = " " Then '遇空格则处理word,此时word为一完整单词
If word <> "" Then
句(行, 词) = word 'word写入字符串数组
词 = 词 + 1
word = ""
End If
ElseIf s = 13 Then '与回车的处理
句(行, 词) = word
行 = 行 + 1
词 = 1
word = ""
Else
word = word + Chr(s)
End If
i = i + 1
Loop
r.Close()
MsgBox("文件读入完成")
Do Until x = 行 + 1 '将字符串数组中的内容写入一个文件
Do Until 句(x, y) = ""
w.Write(句(x, y))
If 句(x, y + 1) <> "" Then
w.Write(" ")
End If
y = y + 1
Loop
w.Write(Chr(13))
x = x + 1
y = 1
Loop
w.Close()
MsgBox("文件写入完成")
End Sub
非常非常非常非常感谢jyh_jack,
我写了这么一段
dim arr(100) as String
arr = Split(r.ReadLine, " ")
Do Until i = 90
If arr(i) <> "" Then '不为空则显示字符串,为空则跳过
MsgBox(arr(i))
End If
i = i + 1
Loop
r.Close()
但是总是报错 这是咋回事 |
|