2010-08-02 87 views
0

我有一個應用程序解析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

回答

2

與外國字符,例如「Felvidéķ馬」

那是你真正的麻煩就來了,有一點你可以做事後來解決這個問題。目前還不清楚你是如何得到字符串的,但它是從http流創建的,而不關注網頁編碼。例如HttpResponse.ContentEncoding。

一旦你得到這個權利,其他一切都很簡單。不需要轉換任何東西,你寫給dbase的是實際的文本。如果您無法弄清楚這一點,請務必使用詳細信息更新您的問題,這些詳細信息介紹了您如何獲得_html字符串值。

1

我的建議是之前將數據轉換爲UTF-8或當它穿過你的應用程序,如果可能的話。

+0

如何在使用正則表達式時執行此操作。 – vbNewbie 2010-08-02 17:22:33