AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Umlaute-Problem mit idHTTP.Get (Indy) => ö und Co.
Thema durchsuchen
Ansicht
Themen-Optionen

Umlaute-Problem mit idHTTP.Get (Indy) => ö und Co.

Ein Thema von MCXSC · begonnen am 30. Mär 2008 · letzter Beitrag vom 31. Mär 2008
Antwort Antwort
Seite 1 von 3  1 23      
MCXSC
(Gast)

n/a Beiträge
 
#1

Umlaute-Problem mit idHTTP.Get (Indy) => ö und Co.

  Alt 30. Mär 2008, 16:50
Hallo,

ich habe folgenden Code:

Delphi-Quellcode:
var
  HTMLCode: TStringList;

[...]

function DownloadHTML(URL: String): String;
begin
  try
    Result := IndyHTTP.Get(URL);
  except
    Exit;
  end;
  Result := StringReplace(Result, #13, #13#10, [rfReplaceAll]);
end;
Damit lese ich also den HTML-Code einer URL aus. Jedoch habe ich das Problem, dass bei manchen Webseiten nur z.B. folgendes herauskommt:

Zitat:
Doch Elben und Menschen verbündeten sich und konnten Sauron schließlich bezwingen. Doch der Ring wurde nicht zerstört, sondern ging verloren, weswegen auch Sauron nicht vollständig besiegt wurde. Nach Hunderten von Jahren geriet der Ring in die Hände des Hobbits Bilbo Beutlin (Ian Holm), der an ihm nur die Fähigkeit nutzte, sich damit unsichtbar machen zu können. Doch als der Ring an seinen Neffen Frodo (Elijah Wood) übergeht, erahnt der Zauberer Gandalf (Ian McKellen), um was es sich bei dem Schmuckstück handelt. Da die finsteren neun Ringgeister, schwarze Reiter, bereits nach dem Ring Ausschau halten, rät Gandalf Frodo, den Ring in das Elbenheim Bruchtal zu bringen, wo über sein weiteres Schicksal entschieden werden soll. Also macht sich Frodo mit seinen Gefährten Sam (Sean Astin), Merry und Pippin auf die gefahrvolle Reise, auf der sie von dem geheimnisvollen Waldläufer Streicher (Viggo Mortensen) Hilfe finden. Doch das ist er der Auftakt zu einem großen Abenteuer, das zur Gründung der neunköpfigen Gemeinschaft des Rings führt, einer Abordnung, die Saurons Fluch zerstören soll...
Wie man sieht, "funktionieren" die Umlaute nicht korrekt. Das Problem tritt aber nicht bei allen URLs auf, sondern nur bei manchen (aber alles deutsche URLs).

Ich habe bisher keine Fehlerlösung gefunden... Hat hier vielleicht jemand eine Idee?

Have fun,
MCXSC
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Umlaute-Problem mit idHTTP.Get (Indy) => ö und Co.

  Alt 30. Mär 2008, 16:53
Hallo Marcel,

nicht alle HTML-Seiten werden gleich passend im Windows ANSI Code ausgeliefert (CP1252). Probiere es mal so:

Delphi-Quellcode:
// ...
    Result := Utf8ToAnsi(IndyHTTP.Get(URL));
// ...
Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Umlaute-Problem mit idHTTP.Get (Indy) => ö und Co.

  Alt 30. Mär 2008, 18:49
Zitat von MCXSC:
Ich habe bisher keine Fehlerlösung gefunden... Hat hier vielleicht jemand eine Idee?
Funktioniert doch. Die Dateien sind "nur" UTF8-Codiert und ist damit (wenn der Text in einer HTML-Datei verwendet wird und die Codierung korrekt angegebn ist) auch 100% in Ordnung.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Umlaute-Problem mit idHTTP.Get (Indy) => ö und Co.

  Alt 30. Mär 2008, 19:05
Muss man hier vor dem Aufruf von Utf8ToAnsi überprüfen, ob es utf8 kodiert ist, oder kann man bedenkenlos alles an die Funktion übergeben ?
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Umlaute-Problem mit idHTTP.Get (Indy) => ö und Co.

  Alt 30. Mär 2008, 19:17
Hallo Christian,

es liegt in der Natur der Sache, dass ein AnsiString stets beides enthalten kann. Die Erkennung der UTF-8 Lead-Bytes ist genau die Spezialität der Ansi-Funktionen - und auch Utf8ToAnsi() beherrscht das gut.

Freundliche Grüße
  Mit Zitat antworten Zitat
Benutzerbild von phXql
phXql

Registriert seit: 11. Mär 2004
Ort: Mühldorf
824 Beiträge
 
#6

Re: Umlaute-Problem mit idHTTP.Get (Indy) => ö und Co.

  Alt 30. Mär 2008, 19:40
Wenn sie denn der Webserver ausliefert. Afaik kann der Internet Explorer nicht mit den BOMs umgehen.
"Dunkel die andere Seite ist"
"Yoda! Halts Maul und iss deinen Toast!"
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Umlaute-Problem mit idHTTP.Get (Indy) => ö und Co.

  Alt 30. Mär 2008, 19:58
Zitat von phXql:
Wenn sie denn der Webserver ausliefert. Afaik kann der Internet Explorer nicht mit den BOMs umgehen.
Der Browser wird primär die Codierungsinformationen des HTTP-Response auswerten und danach die der HTML-Datei. AFAIK kommt er auch mit dem BOM zurecht, ignoriert ihn aber u.U.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
MCXSC
(Gast)

n/a Beiträge
 
#8

Re: Umlaute-Problem mit idHTTP.Get (Indy) => ö und Co.

  Alt 30. Mär 2008, 20:11
Zitat von marabu:
Delphi-Quellcode:
// ...
    Result := Utf8ToAnsi(IndyHTTP.Get(URL));
// ...
Danke, aber wenn ich das so mache, bekomme ich im weiteren Verlauf immer ein "Listenindex überschreitet das Maximum (-1)", da der String/die Stringlist anscheinend immer leer ist?
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Umlaute-Problem mit idHTTP.Get (Indy) => ö und Co.

  Alt 30. Mär 2008, 20:30
Du hast oben zwar eine Stringlist deklariert, aber benutzt keine, zumindest nicht in dem Code den du gepostest hast.
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Umlaute-Problem mit idHTTP.Get (Indy) => ö und Co.

  Alt 30. Mär 2008, 20:51
[Off-Topic]Thunderbird hat wohl etwas zu viel Automatismus bezüglich übereiliger UTF8-Decodierung eingebaut[/Off-Topic]
Miniaturansicht angehängter Grafiken
dp-antwort_208.png  
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 12:26 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