Foxtable(狐表)用户栏目专家坐堂 → [求助]编码合并文本文件出现乱码


  共有2101人关注过本帖树形打印复制链接

主题:[求助]编码合并文本文件出现乱码

帅哥哟,离线,有人找我吗?
农村人
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:174 积分:2349 威望:0 精华:0 注册:2015/8/12 15:36:00
[求助]编码合并文本文件出现乱码  发帖心情 Post By:2019/8/30 19:00:00 [只看该作者]

我的文本格式是(如下):
张三 北京AAA 111 1111
李四 河北FFF 222 2222
王五 天津RH 333 3333
......


我通过如下代码执行合并:
Dim dlg As new OpenFileDialog
dlg.Filter = "文本文件|*.txt"
If dlg.ShowDialog = DialogResult.OK Then
    Using sr As IO.StreamReader = New IO.StreamReader(dlg.FileName) '直接从文件路径生成'
    Dim line As String = sr.ReadLine() '读取一行
        Dim rs1() As String = line.Split(vbcr)
        For i As Integer = 0 To rs1.Length - 1
            Dim cs() As String = rs1(i).Split(vbtab)
            If cs.Length = 4 Then
                Dim dr As DataRow = DataTables("表A").Addnew()
                dr("第一列") = cs(0)
                dr("第二列") = cs(1)
                dr("第三列") = cs(2)
                dr("第四列") = cs(3)
            End If
        Next 
    Do While line IsNot Nothing '如果不为空.为空说明读取完毕,结束循环
        line = sr.ReadLine() '读取下一行        
        Dim rs() As String = line.Split(vbcr)
        For i As Integer = 0 To rs.Length - 1
            Dim cs() As String = rs(i).Split(vbtab)
            If cs.Length = 4 Then
                Dim dr As DataRow = DataTables("表A").Addnew()
                dr("第一列") = cs(0)
                dr("第二列") = cs(1)
                dr("第三列") = cs(2)
                dr("第四列") = cs(3)
            End If
        Next     
    Loop
End Using
End If
能完成合并,但是出现乱码:

图片点击可在新窗口打开查看此主题相关图片如下:乱码.png
图片点击可在新窗口打开查看

而且代码 执行完毕后显示错误:

图片点击可在新窗口打开查看此主题相关图片如下:错误提示.png
图片点击可在新窗口打开查看

求助上面代码如何修改?





 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107035 积分:544406 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/30 20:36:00 [只看该作者]

编码问题可以参考:

Using sr As IO.StreamReader = New IO.StreamReader(dlg.FileName,System.Text.Encoding.ASCII)

Encoding类型,可选的编码有:

Default
ASCII
BigEndianUnicode 
Unicode 
UTF32 
UTF7 
UTF8

具体是那种编码,自己尝试


------------------

Dim dlg As new OpenFileDialog

dlg.Filter = "文本文件|*.txt"

If dlg.ShowDialog = DialogResult.OK Then

    Using sr As IO.StreamReader = New IO.StreamReader(dlg.FileName,System.Text.Encoding.UTF8) '直接从文件路径生成'

    Dim line As String = sr.ReadLine() '读取一行

    Do While line IsNot Nothing  '如果不为空.为空说明读取完毕,结束循环

        Dim cs() As String = line.trim().Replace(vbvr,"").Replace(vblf,"").Split(vbtab)

        If cs.Length = 4 Then

            Dim dr As DataRow = DataTables("表A").Addnew()

            dr("第一列") = cs(0)

            dr("第二列") = cs(1)

            dr("第三列") = cs(2)

            dr("第四列") = cs(3)

        End If

        line = sr.ReadLine() '读取下一行

    Loop

End Using

End If


 回到顶部