从html解析的特殊字符

问题描述:

我有一个应用程序解析html页面并提取一些带有外来字符的文本,例如'Felvidék Ma'。现在我想将这个输入到我的数据库中,但不是以这种格式,而是原始格式。所以在写入sql server数据库或写入文本文件之前,我可以将它转换为utf 8。这里是最初的术语'FelvidékMa'。我使用正则表达式来解析HTML,所以我不知道是否有一个选项来协助这个。这里是我的代码:从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

使用nvarchar作为列类型并对HTML进行实际解析(包括编码),并且不应该对Unicode有任何问题。 – Joey 2010-08-02 17:18:34

+0

我确实有nvarchar,但我可以在使用正则表达式时转换编码 – vbNewbie 2010-08-02 17:24:28

与外国字符,例如“Felvidéķ马”

那是你真正的麻烦就来了,有一点你可以做事后来解决这个问题。目前还不清楚你是如何得到字符串的,但它是从http流创建的,而不关注网页编码。例如HttpResponse.ContentEncoding。

一旦你得到这个权利,其他一切都很简单。不需要转换任何东西,你写给dbase的是实际的文本。如果您无法弄清楚这一点,请务必使用详细信息更新您的问题,这些详细信息介绍了您如何获得_html字符串值。

我的建议是之前将数据转换为UTF-8或当它穿过你的应用程序,如果可能的话。

+0

如何在使用正则表达式时执行此操作。 – vbNewbie 2010-08-02 17:22:33