从html解析的特殊字符

时间:2010-08-02 17:14:04

标签: visual-studio-2008 sql-server-2008

我有一个应用程序正在解析html页面并提取一些带有外来字符的文本,例如'Felvidék Ma'。现在我想把它输入我的数据库,但不是这种格式,而是原始格式。因此,在写入sql server数据库或甚至写入文本文件之前,我可以将其转换为utf 8。这是最初的术语'FelvidékMa'。我使用正则表达式来解析html所以我不确定是否有一个选项可以帮助解决这个问题。这是我的代码:

 If Not String.IsNullOrEmpty(_html) Then
            'get all href tags in the html page
            Dim regex As Regex = New Regex( _
                        "<TotalFound>(?<link>.*?)</TotalFound>", _
                            RegexOptions.IgnoreCase _
                            Or RegexOptions.CultureInvariant _
                            Or RegexOptions.IgnorePatternWhitespace _
                            Or RegexOptions.Compiled _
                            )

            Dim ms As MatchCollection = regex.Matches(_html)
            Dim url As String = String.Empty
            For Each m As Match In ms
                url = m.Groups("link").Value
                If Not String.IsNullOrEmpty(url) Then

我找到了问题的根源。它是在获取html页面并读取流时。我将默认编码更改为UTF 8,现在一切都很好。再次感谢。

  Dim reader As StreamReader = New StreamReader(responseStream, Encoding.Default)
            returnContent = reader.ReadToEnd()

2 个答案:

答案 0 :(得分:2)

  

使用外国字符,例如'Felvidék Ma'

这就是你真正遇到麻烦的地方,之后几乎无法解决这个问题。目前尚不清楚你是如何获得字符串的,但它是从http流创建的,而没有注意网页编码。例如,HttpResponse.ContentEncoding。

一旦你做对了,其他一切都很简单。无需转换任何内容,您写入dbase的内容是实际文本。如果您无法解决这个问题,请务必使用描述如何获得_html字符串值的详细信息更新您的问题。

答案 1 :(得分:1)

我建议在可能的情况下,在数据通过您的应用程序之前或之后将数据转换为UTF8。