AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi In HTML-Dateien Umlaute / Sonderzeichen ersetzen

In HTML-Dateien Umlaute / Sonderzeichen ersetzen

Ein Thema von ringli · begonnen am 26. Okt 2008 · letzter Beitrag vom 3. Nov 2008
Antwort Antwort
Seite 2 von 2     12
Benutzerbild von Xong
Xong

Registriert seit: 9. Jan 2008
186 Beiträge
 
Delphi 2006 Professional
 
#11

Re: In HTML-Dateien Umlaute / Sonderzeichen ersetzen

  Alt 3. Nov 2008, 09:05
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 ä -> &auml 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
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#12

Re: In HTML-Dateien Umlaute / Sonderzeichen ersetzen

  Alt 3. Nov 2008, 10:38
Hallo,

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

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.
  Mit Zitat antworten Zitat
Benutzerbild von Xong
Xong

Registriert seit: 9. Jan 2008
186 Beiträge
 
Delphi 2006 Professional
 
#13

Re: In HTML-Dateien Umlaute / Sonderzeichen ersetzen

  Alt 3. Nov 2008, 11:18
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 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
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#14

Re: In HTML-Dateien Umlaute / Sonderzeichen ersetzen

  Alt 3. Nov 2008, 11:25
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?
  Mit Zitat antworten Zitat
Benutzerbild von Xong
Xong

Registriert seit: 9. Jan 2008
186 Beiträge
 
Delphi 2006 Professional
 
#15

Re: In HTML-Dateien Umlaute / Sonderzeichen ersetzen

  Alt 3. Nov 2008, 11:37
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
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#16

Re: In HTML-Dateien Umlaute / Sonderzeichen ersetzen

  Alt 3. Nov 2008, 12:05
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]
  Mit Zitat antworten Zitat
Benutzerbild von Xong
Xong

Registriert seit: 9. Jan 2008
186 Beiträge
 
Delphi 2006 Professional
 
#17

Re: In HTML-Dateien Umlaute / Sonderzeichen ersetzen

  Alt 3. Nov 2008, 13:02
[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 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 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 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?

LG,
Xong
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#18

Re: In HTML-Dateien Umlaute / Sonderzeichen ersetzen

  Alt 3. Nov 2008, 13:22
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.
  Mit Zitat antworten Zitat
Benutzerbild von Xong
Xong

Registriert seit: 9. Jan 2008
186 Beiträge
 
Delphi 2006 Professional
 
#19

Re: In HTML-Dateien Umlaute / Sonderzeichen ersetzen

  Alt 3. Nov 2008, 13:32
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.

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...
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#20

Re: In HTML-Dateien Umlaute / Sonderzeichen ersetzen

  Alt 3. Nov 2008, 13:46
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.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:13 Uhr.
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