从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()
答
与外国字符,例如“Felvidéķ马”
那是你真正的麻烦就来了,有一点你可以做事后来解决这个问题。目前还不清楚你是如何得到字符串的,但它是从http流创建的,而不关注网页编码。例如HttpResponse.ContentEncoding。
一旦你得到这个权利,其他一切都很简单。不需要转换任何东西,你写给dbase的是实际的文本。如果您无法弄清楚这一点,请务必使用详细信息更新您的问题,这些详细信息介绍了您如何获得_html字符串值。
使用nvarchar作为列类型并对HTML进行实际解析(包括编码),并且不应该对Unicode有任何问题。 – Joey 2010-08-02 17:18:34
我确实有nvarchar,但我可以在使用正则表达式时转换编码 – vbNewbie 2010-08-02 17:24:28