Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi In HTML-Dateien Umlaute / Sonderzeichen ersetzen (https://www.delphipraxis.net/123038-html-dateien-umlaute-sonderzeichen-ersetzen.html)

Xong 3. Nov 2008 08:05

Re: In HTML-Dateien Umlaute / Sonderzeichen ersetzen
 
Zitat:

Zitat von ringli
Ich selber brauche das nicht da ich mit Webseitenerstellung nichts mache. Ein Bekannter hatte mich gefragt ob ich ihm so was programmieren könnte. Für mich ist das also eher eine Machbarkeitsstudie. Aber danke für dein Angebot. Vielleicht komme ich ja doch mal darauf zurück.

Sag deinem Bekannten trotzdem mal, dass das Umschreiben von Umlauten in die entsprechenden Entities (also ä -> ä) einfach nur kontraproduktiv ist.

Außerdem gibt es noch ein paar Probleme:
  1. Wenn du nur Zeichen außerhalb von HTML-Tags (<...>) übersetzt, fehlen einige Ersetzungen, die z. B. in title- oder alt-Attributen stattfinden müssten. Außerdem müssen auch Sonderzeichen in Links ersetzt werden. (So wie es z. B. bei Wikipedia passiert.) Die entsprechende Beschreibung dazu findet man unter RFC 1738.
  2. Ein normales Leerzeichen mit einem , also einem non-breaking-space zu ersetzen ist falsch. Das wäre dann nämlich ein geschütztes Leerzeichen.
  3. Selbst wenn du die Umlaute ersetzt, was wäre denn mit ß, oder auch ©?
    Was ich damit sagen will ist, dass du niemals eine vollständige Liste haben kannst.

Nur als Anmerkung, falls jemand mal ein ähnliches Problem haben sollte.

LG,
Xong

nahpets 3. Nov 2008 09:38

Re: In HTML-Dateien Umlaute / Sonderzeichen ersetzen
 
Hallo,

eine kleine Anmerkung hätt' ich noch:
anstelle von
Delphi-Quellcode:
'ä' : AppendString(OUTPUT_FILE, '&auml;');
sollte auch
Delphi-Quellcode:
'ä' : OUTPUT_FILE.Write('&auml;',5);
funktionieren. Spart Laufzeit für die For-Schleife :wink:

Die Anmerkungen von Xong sind nicht ganz von der Hand zu weisen (Der IE kann im Title-Tag nicht in allen Versionen mit "übersetzten" Umlauten umgehen, so dass das Ausklammern von HTML-Tags nicht immer falsch ist.) Wenn in einem Link, also zwischen <a href=" und "> ein Umlaut vorkommt, so ist dieser selbstverständlich nicht zu ersetzen, da er ja Teil der URL ist. Also ist auch hier das Tag von der Umwandlung auszunehmen. Hier das & durch &amp; zu ersetzen wäre dann einfach nur noch falsch.

Habe selbst eine derartige Umwandlungsroutine geschrieben, um ausschließlich an den Text von HTML-Seiten zu kommen, alle Tags mussten entfernt werden und der Rest für die suchkonforme Speicherung in Datenbanken aufbereitet werden. Ganz unsinnig ist eine derartige Umwandlung also nicht. Es kommt darauf an, was man mit dem Ergebnis machen will.

Xong 3. Nov 2008 10:18

Re: In HTML-Dateien Umlaute / Sonderzeichen ersetzen
 
Zitat:

Zitat von nahpets
Wenn in einem Link, also zwischen <a href=" und "> ein Umlaut vorkommt, so ist dieser selbstverständlich nicht zu ersetzen, da er ja Teil der URL ist. Also ist auch hier das Tag von der Umwandlung auszunehmen.

Natürlich müssen die Umlaute ersetzt werden. Das geht aber auch aus der verlinkten RFC hervor.
Beispiel aus der Wikipedia:
Der Link http://de.wikipedia.org/wiki/Ä muss im Quellcode als http://de.wikipedia.org/wiki/%C3%84 kodiert werden.
Auf der Seite http://de.wikipedia.org/wiki/Deutsches_Alphabet kann man das beim verlinkten Ä auch beobachten. (z. B. im Firefox oder IE7: Rechtsklick auf das Ä -> Eigenschaften)

Näheres findet man auch unter URL Encoding

Zitat:

Zitat von nahpets
Hier das & durch &amp; zu ersetzen wäre dann einfach nur noch falsch.

Auch das stimmt nicht. Mit dem Ampersand & werden in HTML-Dokumenten Entities eingeleitet. Mit einem Semikolon ; werden sie abgeschlossen. Werden in einer URL &-Zeichen verwendet, so müssen sie als &amp; kodiert werden, da der Parser ansonsten eine beginnende Entität vermutet. Das würde dann zu einem invaliden HTML-Dokument führen.

Heutzutage noch mit invalidem HTML zu arbeiten, wäre aber gar nicht gut, da die Browser dann mit hoher Wahrscheinlichkeit im Quirksmode arbeiten und Darstellung und Layout vom Zufall geleitet werden, oder aber zumindest in unterschiedlichen Browsern komplett unterschiedlich interpretiert werden.

LG,
Xong

nahpets 3. Nov 2008 10:25

Re: In HTML-Dateien Umlaute / Sonderzeichen ersetzen
 
Hallo,

was passiert denn mit dieser URL http://www.google.de/search?hl=de&q=wikipedia&meta=, wenn ich das & durch &amp; ersetze?
falsch?
richtig?
oder doch andersherum?

Xong 3. Nov 2008 10:37

Re: In HTML-Dateien Umlaute / Sonderzeichen ersetzen
 
Zitat:

Zitat von nahpets
was passiert denn mit dieser URL http://www.google.de/search?hl=de&q=wikipedia&meta=, wenn ich das & durch &amp; ersetze?

Du darfst das & ja nur im HTML-Quellcode ersetzen. Der Browser macht aus dem &amp; wieder &. Wenn du aber eben nur & im Code stehen hast, dann bekommst du invaliden Code.

Aus http://www.google.de/search?hl=de&amp;q=...edia&amp;meta= macht der Browser also http://www.google.de/search?hl=de&q=wikipedia&meta.

Du kannst dir ja auch mal den Quellcode deines Postings anschauen.
Das DP-Forum macht aus deinem
http://www.google.de/search?hl=de&q=wikipedia&meta -> http://www.google.de/search?hl=de&amp;q=wikipedia&amp;meta=
und aus dem
http://www.google.de/search?hl=de&amp;q=wikipedia&amp;meta= -> http://www.google.de/search?hl=de&amp;amp;q=wikipedia&amp;amp;meta=

Ich hoffe, ich konnte mich jetzt etwas deutlicher ausdrücken.
Ich weiß, das klingt alles etwas abgehoben und gar nicht wichtig. Tatsächlich gehört es aber zu gutem Webdesign dazu.

LG,
Xong

nahpets 3. Nov 2008 11:05

Re: In HTML-Dateien Umlaute / Sonderzeichen ersetzen
 
Hallo,

sorry, aber Deine Ansichten sind nicht zu 100% korrekt.

Im Forum wird nur in dem Bereich zwischen und das & durch ein &amp; ersetzt, aber nicht innerhalb des <a href="http://www.google.de/search?hl=de&amp;q=wikipedia&amp;meta=">Das wird als Linktext angezeigt[/code]ist fehlerhaft. So wäre es richtig:
Code:
[url="http://www.google.de/search?hl=de&q=wikipedia&meta="]Das wird als Linktext angezeigt[/url]
Ebenso wäre das richtig:
Code:
[url="http://www.google.de/search?hl=de&q=wikipedia&meta="]Das wird als Linktext mit &amp;Ampersand angezeigt[/url]
oder aber auch
Code:
[url="http://www.google.de/search?hl=de&q=wikipedia&meta="]http://www.google.de/search?hl=de&amp;q=wikipedia&amp;meta=[/url]

Xong 3. Nov 2008 12:02

Re: In HTML-Dateien Umlaute / Sonderzeichen ersetzen
 
[quote=nahpets]Im Forum wird nur in dem Bereich zwischen und das & durch ein &amp; ersetzt, aber nicht innerhalb des <a href="http://www.google.de/search?hl=de&amp;q=wikipedia&amp;meta=" target="_blank" class="postlink" >[img]./images/common/inlink.gif[/img]falsch?[/code]
So wird also der BB-Code
Code:
[url=http://www.google.de/search?hl=de&q=wikipedia&meta=]falsch?[/url]
aus deinem Posting dargestellt.

Zitat:

Zitat von nahpets
Das & ist das Trennzeichen zwischen den einzelnen mit = verbundenen Parameterpaaren der URL.

Auch das stimmt nur begrenzt. Man kann beliebige Trennzeichen einführen. Empfohlen wird als Trennzeichen übrigens ein Semikolon, nicht das Ampersand. Dazu gibt es nicht nur einen Thread im Selfhtml-Forum: http://forum.de.selfhtml.org/archiv/...07828/#m670540.

Zitat:

Zitat von nahpets
Diese Aussage ist so nicht richtig. Eine URL in der Form
Code:
[url="http://www.google.de/search?hl=de&amp;q=wikipedia&amp;meta="]Das wird als Linktext angezeigt[/url]
ist fehlerhaft.

Nein. Wenn der Separator ein & ist, dann ist das die einzig richtige Schreibweise.

Zitat:

Zitat von nahpets
So wäre es richtig:
Code:
[url="http://www.google.de/search?hl=de&q=wikipedia&meta="]Das wird als Linktext angezeigt[/url]
Ebenso wäre das richtig:
Code:
[url="http://www.google.de/search?hl=de&q=wikipedia&meta="]Das wird als Linktext mit &amp;Ampersand angezeigt[/url]
oder aber auch
Code:
[url="http://www.google.de/search?hl=de&q=wikipedia&meta="]http://www.google.de/search?hl=de&amp;q=wikipedia&amp;meta=[/url]

Dann überprüfe mal folgenden Quellcode mit dem Validator (Ich habe deine drei Links einfach in ein ansonsten valides XHTML-Dokument eingesetzt.):
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  <title>Test</title>
</head>
<body>
<h1>Testdokument</h1>
<ul>[*][url="http://www.google.de/search?hl=de&q=wikipedia&meta="]Das wird als Linktext angezeigt[/url][*][url="http://www.google.de/search?hl=de&q=wikipedia&meta="]Das wird als Linktext mit &amp;Ampersand angezeigt[/url]
[*][url="http://www.google.de/search?hl=de&q=wikipedia&meta="]http://www.google.de/search?hl=de&amp;q=wikipedia&amp;meta=[/url][/list]</body>
</html>
Er wird Fehlermeldungen ausgeben.

Der folgende Quellcode mit maskierten Ampersands ist jedoch valide und die Links funktionieren ebenfalls:
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  <title>Test</title>
</head>
<body>
<h1>Testdokument</h1>
<ul>[*][url="http://www.google.de/search?hl=de&amp;q=wikipedia&amp;meta="]Das wird als Linktext angezeigt[/url][*][url="http://www.google.de/search?hl=de&amp;q=wikipedia&amp;meta="]Das wird als Linktext mit &amp;Ampersand angezeigt[/url]
[*][url="http://www.google.de/search?hl=de&amp;q=wikipedia&amp;meta="]http://www.google.de/search?hl=de&amp;q=wikipedia&amp;meta=[/url][/list]</body>
</html>
Jetzt deutlicher? :stupid:

LG,
Xong

nahpets 3. Nov 2008 12:22

Re: In HTML-Dateien Umlaute / Sonderzeichen ersetzen
 
Hallo,

ich gebe mich geschlagen:
Offensichtlich hast Du in Anbetracht Deiner Interpretation der Definitionen recht, nur ich habe das Problem, auf älteren Systemen Fehler zu erhalten. Da ist wohl was von Betriebssystem und Browserversion abhängig. Sprich: Je älter, desto weniger standardkonform.

Xong 3. Nov 2008 12:32

Re: In HTML-Dateien Umlaute / Sonderzeichen ersetzen
 
Zitat:

Zitat von nahpets
ich gebe mich geschlagen:
Offensichtlich hast Du in Anbetracht Deiner Interpretation der Definitionen recht, nur ich habe das Problem, auf älteren Systemen Fehler zu erhalten. Da ist wohl was von Betriebssystem und Browserversion abhängig. Sprich: Je älter, desto weniger standardkonform.

Also in puncto Alter geht die Waschmaschine eindeutig an dich. :lol:

Mich würde aber wirklich interessieren, auf welchem System und mit welchem Browser da Fehler entstehen. Ich habe gerade auf einem IE 3.0, 4.01 und 5.0 getestet. Die führen die Links aber alle drei korrekt aus.
Zugegeben, das ist kein aussagekräftiger Test, da ich das nur unter Windows XP mit einer Multiple-IE-Installation nachvollziehen kann. Möglicherweise wird ein "Original-System" anders reagieren.

Interessant wäre aber zumindest der HTML-Quellcode mit dem die Fehler auftreten.

LG,
Xong

PS: Mir macht das übrigens viel Spaß. Ich habe unsere Auseinandersetzung sehr genossen. Ich hoffe, meine Meinung kam nicht allzu arrogant herüber. Wenn man im Webbereich tätig ist, muss man sich meist viel anhören über schlechtes Markup und Pipapo...

nahpets 3. Nov 2008 12:46

Re: In HTML-Dateien Umlaute / Sonderzeichen ersetzen
 
Hallo,

mein alter Hobel zu Hause mit NT 4 von anno März 2000 und IE 6 irgendwas zeigt im Titel bei
Code:
<title>was mit &amp; an</title>
es genauso an, wie es zwischen den Tags steht, da wird nicht aus &amp; das &. Bei Url's mit &amp; im Href-Teil laufen die Links mit &amp; ins Nirwana oder wo der Webserver sie sonst hininterpretiert, da er halt &amp; anstatt & erhält. Das geht da mit &amp; nicht.
Ist aber eigentlich auch nicht wirklich von Bedeutung.


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

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