Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Html codierte Umlaute PERFORMANT decoden? (https://www.delphipraxis.net/99959-html-codierte-umlaute-performant-decoden.html)

richard_boderich 20. Sep 2007 06:41


Html codierte Umlaute PERFORMANT decoden?
 
Moin DP-Kollegen!

Ich habe ein kleines Problem mit Html-Umlauten einer Kontaktliste, die ich aus einer geparsten Intranetseite ausgelesen hab.

"Bärchen" wird zum Beispiel zu "Bärchen"

Gibt es eine Möglichkeit eine schnelle Dekodierung durchzuführen, die mir den originalen Namen liefert?
Ich habe schon Urldecode von den Indys probiert, jedoch hat diese Funktion rein garnichts bei mir bewirkt.
Zur Not kann ich auch Stringreplace verwenden, ber vielleicht hat ja jemand einen besseren Vorschlag dafür. :)

Gruß Richard

mkinzler 20. Sep 2007 06:52

Re: Html codierte Umlaute PERFORMANT decoden?
 
URLDecode macht auch was anderes.
Du brächtest eine Delphi-Version von html_entity_decode()

richard_boderich 20. Sep 2007 07:09

Re: Html codierte Umlaute PERFORMANT decoden?
 
Und sowas gibt es wohl nicht in Delphi?

Ok danke dir, also werd ich doch Stringreplace verwenden muessen.

Gruß Richard

mkinzler 20. Sep 2007 07:12

Re: Html codierte Umlaute PERFORMANT decoden?
 
Vielleicht hat jemand so eine Funktion geschrieben, mir wäre aber keine bekannt.

Bernhard Geyer 20. Sep 2007 07:49

Re: Html codierte Umlaute PERFORMANT decoden?
 
Zitat:

Zitat von richard_boderich
Und sowas gibt es wohl nicht in Delphi?

Ich denke in der Utility Library ist sowas vorhanden.

Und wenn du deine HTML-Seite vernünftig mit einen HTML-Parser einliest (THTML, oder MSHTML-Unit stellt sich dieses Problem nicht da diese Wandlung schon von diesen Komponenten durchgeführt werden.

marabu 20. Sep 2007 08:35

Re: Html codierte Umlaute PERFORMANT decoden?
 
Hallo,

wer MSHTML eingebunden hat, der kann seine character entities einfach so eliminieren:

Delphi-Quellcode:
function HtmlToAnsi(const s: string): string;
var
  doc: OleVariant;
begin
  doc := CoHTMLDocument.Create;
  doc.open;
  doc.Write(s);
  doc.Close;
  Result := doc.body.innerText;
end;
Grüße vom marabu

richard_boderich 20. Sep 2007 09:55

Re: Html codierte Umlaute PERFORMANT decoden?
 
@Bernhard

Die Utility Library sieht gut aus. :) Werde es mal testen.

@Marabu
MSHtml? Ist das ein Delphi Unit? Hast du eventuell weitergehende Erfahrungen damit. Mich wuerde vor
allem Interessieren wie groß der Overhead ist?

Gruß Richard

mkinzler 20. Sep 2007 10:13

Re: Html codierte Umlaute PERFORMANT decoden?
 
Zitat:

MSHtml? Ist das ein Delphi Unit? Hast du eventuell weitergehende Erfahrungen damit. Mich wuerde vor
allem Interessieren wie groß der Overhead ist?
Ist eine Wrapper um ne System-Bibliothek

blackdrake 8. Sep 2008 22:24

Re: Html codierte Umlaute PERFORMANT decoden?
 
Hallo.

Ich habe das selbe Problem. Ich brauche unbedingt eine Funktion, die HTML-Entities dekodiert. Hier ist mir die Geschwindigkeit eigentlich ziemlich egal, aber es ist wichtig, dass alle Zeichen vertreten sind. Ich möchte also keine unendlich lange Funktion haben, in der alle möglichen Entities einfach ersetzt werden, da hier die Gefahr besteht, dass Entities wie z.B. € vergessen werden. Es soll also eine universelle Funktion sein, die nicht veraltet.

Die Utilities habe ich mit einem Tool komplett nach "HTML", "Decode" und "Entities" durchsucht - keine relevanten Treffer. Es scheint also keine Funktion dort zu geben, die html_entity_decode von PHP ersetzt.

Ich werde das mit diesem OleVariant auch mal ausprobieren. MS-HTML und OLE hört sich für mich irgendwie nach Inkompatibilität oder gar Abhängigkeit von Microsoft's Internet Explorer an... Bin ich da auf dem Holzweg?

Gruß
blackdrake

3_of_8 9. Sep 2008 00:10

Re: Html codierte Umlaute PERFORMANT decoden?
 
Ja, da bist du voll vom IE abhängig - macht aber auch nicht so viel, solange du unter Windows bleibst, weil der IE sowieso immer dabei ist. Ich würde eine Hashmap in Verbindung mit einer eigenen Funktion empfehlen. In die Hashmap kommen alle Namens-Entitäten rein (so wie &, < usw.) und zusätzlich musst du dich noch um die Nummern-Entitäten wie * und B kümmern (oder so ähnlich, schau einfach mal auf SelfHTML).


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:57 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz