Como obter o charset de uma página HTML

votos
0

Eu estou tentando obter o atributo charset em qualquer meta tag HTML. (ie. < meta http-equiv=Content-Type content=text/html; charset=ISO-8859-1 >) Existe alguma maneira de fazer isso em C ++ em linux. Eu estava usando HTML arrumado como um analisador, mas não posso obter esse atributo para me retornar nada diferente de nós-ascii (mesmo que a codificação é utf-8)
esta é a saída que eu tenho: *. * 4 Nó meta
Nome attr: http-equiv
Valor attr: Content-Type
Nome attr: conteúdo
Valor attr: text / html; charset = us-ascii

Publicado 04/10/2008 em 21:59
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

Como pelo pedido de Vinko Vrsalovic, aqui está o código que obter esse resultado:
dumpNode void (tidyNode tnod, travessão int)
{
   tidyNode criança;

   para (criança = tidyGetChild (tnod); criança; criança = tidyGetNext (infantil))
   {
      ctmbstr nome;
      switch (tidyNodeGetType (criança))
     {
       caso TidyNode_Root: name = "Root"; pausa;
       caso TidyNode_DocType: name = "DOCTYPE"; pausa;
       caso TidyNode_Comment: name = "Comment"; pausa;
       TidyNode_ProcIns de caso: name = "instrução de processamento"; pausa;
       caso TidyNode_Text: name = "Text"; pausa;
       caso TidyNode_CDATA: name = "CDATA"; pausa;
       caso TidyNode_Section: name = "Seção XML"; pausa;
       caso TidyNode_Asp: name = "ASP"; pausa;
       caso TidyNode_Jste: name = "JSTE"; pausa;
       caso TidyNode_Php: name = "PHP"; pausa;
       caso TidyNode_XmlDecl: name = "Declaração XML"; pausa;

       caso TidyNode_Start:
       caso TidyNode_End:
       caso TidyNode_StartEnd:
       default:

       TidyAttr att = tidyAttrFirst (criança);
       while (att)
       {
         std :: cout << "Nome attr:" << tidyAttrName (att) << std :: endl;
        std :: cout << "Valor attr:" << tidyAttrValue (att) << std :: endl;
         att = tidyAttrNext (att);
       }
      Break;
      }
      Afirmar (name = NULL!);
      printf ( "% * d *% d% Snode:.% s \ n", travessão, travessão, "", nome);
      dumpNode (criança, travessão + 4);
     }
}
Vazio dumpHtml (TidyDoc tdoc)
{
      dumpNode (tidyGetHtml (tdoc), 0);
}

int main (int argc, char ** argv) {
      std :: string toReturn ( "");
      TidyBuffer saída;
      TidyBuffer errbuf;
      int rc = -1;
      Bool ok;

      tidyBufInit (& de saída);
      tidyBufInit (& errbuf);

      TidyDoc tdoc = tidyCreate ();
      ok = tidyOptSetBool (tdoc, TidyXhtmlOut, sim); // Convert to XHTML
      if (ok)
           rc = tidySetErrorBuffer (tdoc, & errbuf); // diagnóstico de captura
      se (rc> = 0)
           rc = tidyParseFile (tdoc, "fuebuena.html"); // analisar a entrada
      se (rc> = 0)
           rc = tidyCleanAndRepair (tdoc); // Arrumá-lo!
      if (rc> = 0)
           dumpHtml (tdoc);

      return 0;
}

Respondeu 04/10/2008 em 22:34
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more