2010-08-02 3 views
0

У меня есть приложение, которое анализирует страницу html и извлекает текст с помощью иностранных символов, например «Felvidà© k Ma». Теперь я хочу ввести это в мою базу данных, но не в этом формате, а в исходном формате. Поэтому я могу преобразовать его в utf 8 перед записью в базу данных sql-сервера или даже писать в текстовый файл. вот оригинальный термин «Felvidék Ma». Я использую выражения регулярного выражения для синтаксического анализа 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

+0

У меня есть nvarchar, но я могу преобразовать кодировку при использовании выражений regex – vbNewbie

ответ

2

с иностранными символами, например «Felvidà© к Ма»

Вот где начинается ваша реальная проблема, есть мало вы можете сделать после этого, чтобы исправить эту проблему. Неясно, как вы получили строку, но она была создана из потока HTTP, не обращая внимания на кодировку веб-страницы. Например, HttpResponse.ContentEncoding.

Как только вы это сделаете, все остальное просто. Не нужно ничего конвертировать, то, что вы пишете в dbase, является фактическим текстом. Если вы не можете понять это, не забудьте обновить свой вопрос деталями, описывающими, как вы получили строковое значение _html.

1

Мое предложение было бы преобразовать данные в UTF8 до или когда она проходит через ваше приложение, если это возможно.

+0

, как это сделать при использовании выражений регулярных выражений. – vbNewbie

Смежные вопросы