Foxtable(狐表)用户栏目专家坐堂 → [求助]网页数据中文出现乱字符怎么办


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

主题:[求助]网页数据中文出现乱字符怎么办

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


加好友 发短信
等级:三尾狐 帖子:648 积分:6060 威望:0 精华:0 注册:2013/10/22 12:15:00
[求助]网页数据中文出现乱字符怎么办  发帖心情 Post By:2020/7/24 17:17:00 [只看该作者]

网页数据中文出现乱字符怎么办



用下面的代码,读到中文乱字符如何处理    


读取的字符显示中括号内【?????????????У??】


原网页显示如下,需要按F5刷新才会显示正常



此主题相关图片如下:批注 2020-07-24 173909.png
按此在新窗口浏览图片






Dim web As New System.Windows.Forms.WebBrowser()
web.Navigate("https://kodakalaris.my.salesforce.com/00O16000007eXrD")
Do Until web.ReadyState = 4
    Application.DoEvents
Loop

'取数据
Dim Cols() As String = { "第一列","第二列","第三列","第四列","第五列","第六列","第七列","第八列","第九列","第十列","第十一列","第十二列","第十三列","第十四列"}
Dim elems As object = web.Document.GetElementsByTagName("table")(5).GetElementsByTagName("tr")
Dim m As Integer = 0
For Each elem As object In elems
    Dim i As Integer = -1
   
    m = m + 1
    If m > 1 Then
        Tables("临时表").AddNew
    End If
   
    Dim tdelems As object =  elem.GetElementsByTagName("td")
    For Each tdelem As object In tdelems
        i = i + 1
        If Cols(i) = "第三列" OrElse Cols(i) = "第十列" Then
            Tables("临时表").Current(Cols(i)) = tdelem.innerHTML
            '    Tables("临时表").Current(Cols(i)) = tdelem.getattribute("value")

        Else
            Tables("临时表").Current(Cols(i)) = tdelem.Innertext
        End If
    Next
Next
Tables("临时表").save

[此贴子已经被作者于2020/7/24 17:44:43编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107680 积分:547721 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/24 17:39:00 [只看该作者]

试试
Dim web As New System.Windows.Forms.WebBrowser()
web.Navigate("https://kodakalaris.my.salesforce.com/00O16000007eXrD")
Do Until web.ReadyState = 4
    Application.DoEvents
Loop
dim getReader as  new System.IO.StreamReader(web.DocumentStream, System.Text.Encoding.GetEncoding("gb2312"))
dim gethtml as string = getReader.ReadToEnd()
output.show(gethtml )

 回到顶部
帅哥哟,离线,有人找我吗?
tongliaozyr
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:648 积分:6060 威望:0 精华:0 注册:2013/10/22 12:15:00
  发帖心情 Post By:2020/7/24 17:45:00 [只看该作者]

谢谢


 回到顶部
帅哥哟,离线,有人找我吗?
tongliaozyr
  4楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:648 积分:6060 威望:0 精华:0 注册:2013/10/22 12:15:00
  发帖心情 Post By:2020/7/24 17:51:00 [只看该作者]

    web.Navigate(_wz)   '网站网址

    Do Until web.ReadyState = 4 AndAlso web.Document.GetElementById("report1").Innertext <> Nothing
        Application.DoEvents
    Loop


Dim elems As object = web.Document.GetElementById("report1").GetElementsByTagName("tr")
    For Each elem As object In elems
        Dim i As Integer = -1
        m = m + 1
        If m > m1  AndAlso m < elems.Count  - m2  Then  '因为网页的表格有标题,如果不判断,就会增加出一个空行
            Dim r_yx As Row =  t_yx.AddNew()            '在院校信息表中增加i行
           
            Dim tdelems As object =  elem.GetElementsByTagName("td")
            For Each tdelem As object In tdelems                         '读写信息
                i = i + 1
                If IsNumeric(tdelem.Innertext) Then                              '如果能转换成数值则转换
                    If i  > 4 Then
                        r_yx(Cols(i)) =  CInt(val(tdelem.Innertext))
                    Else
                        r_yx(Cols(i)) =  tdelem.Innertext
                       
                    End If
                Else
                    r_yx(Cols(i)) = tdelem.Innertext
                End If
     next

请教  这种代码如何处理中文乱字符?
[此贴子已经被作者于2020/7/24 17:56:24编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107680 积分:547721 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/25 8:55:00 [只看该作者]

我也没有办法。试试按2楼方法把内容全部按指定编码保存为html文件,然后重新加载解析。或者加载作为xml解析

 回到顶部