AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi XE2/Indy 10: Umlaute bei TidHTTP werden als ? angezeigt
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi XE2/Indy 10: Umlaute bei TidHTTP werden als ? angezeigt

Ein Thema von kretabiker · begonnen am 15. Jun 2012 · letzter Beitrag vom 28. Jun 2012
Antwort Antwort
kretabiker

Registriert seit: 10. Mär 2005
Ort: Bargteheide
183 Beiträge
 
Delphi 12 Athens
 
#1

Delphi XE2/Indy 10: Umlaute bei TidHTTP werden als ? angezeigt

  Alt 15. Jun 2012, 16:42
Hallo,

ich frage per Indy-Komponente TidHTTP per Post Daten ab, die mir als XML-String zurück gegeben werden. Dabei gehe ich gemäß dem Tutorial http://www.delphipraxis.net/160152-i...protokoll.html vor.

Der Charset ist dabei ISO-8859-1, was ich auch im Source explizit setze:

Delphi-Quellcode:
(...)
  HTTPClient.Request.CharSet := 'ISO-8859-1';
  
  Enc := CharsetToEncoding(HTTPClient.Request.CharSet);

  ResponseStr := HTTPClient.Post(RequestUrl, Params, Enc);

(...)
Im ResponseStr steht z.B. statt München jedoch M?nchen, obwohl "über den Draht" vom Server der Hexwert fc, der bei ISO-8859-1 dem ü entspricht, geliefert wird - siehe Auszug aus einem WireShark-Netzwerkprotokollmitschnitt:

0000 61 68 6e 3d 22 4d fc 6e 63 68 65 6e 20 28 44 45 ahn="M.nchen (DE

Gleiches auch bei ö und ä. Ich tappse da jetzt völlig im Dunkeln, wie ich das Fragezeichen wegbekomme. Charsets habe ich schon eine ganze Reihe durch, ASCII, Ansi, diverse ISO-8859-Derivate usw.

Hat jemand sonst noch eine Idee?

Viele Grüße

Udo "Kretabiker" Treichel
Udo Treichel
  Mit Zitat antworten Zitat
Benutzerbild von geskill
geskill

Registriert seit: 17. Feb 2007
Ort: NRW
420 Beiträge
 
Delphi 2010 Professional
 
#2

AW: Delphi XE2/Indy 10: Umlaute bei TidHTTP werden als ? angezeigt

  Alt 15. Jun 2012, 18:15
Also die Antwort vom Server wird nicht korrekt umgewandelt.

Du könntest schauen ob du AcceptCharSet gesetzt hast.

Es könnte auch sein, dass der Server ein falsches CharSet (Response.CharSet) sendet und dies somit von Indy falsch umgewandelt wird. Dann müsstest du dies manuell korrigieren. Oder wenn du Zugriff zum Server hast schauen ob dies korrigieren kannst.
Delphi-Quellcode:
ReplyData := TMemoryStream.Create;

HTTPClient.Request.CharSet := 'ISO-8859-1';
   
Enc := CharsetToEncoding(HTTPClient.Request.CharSet);

HTTPClient.Post(RequestUrl, Params, ReplyData, Enc);

ReplyData.Position := 0;

// statt Response.Charset kannst du dies jetzt beliebig anpassen
ResponseStr := ReadStringAsCharset(ReplyData, Response.Charset);

// mit ReplyData.DataString kommt du an den Quellcode

Benutzt du die Version die mit XE2 installiert wurde oder eine aktuellere aus dem SVN. Also empfehle dir auf eine aktuelle aus dem SVN umzusteigen.
Sebastian
  Mit Zitat antworten Zitat
kretabiker

Registriert seit: 10. Mär 2005
Ort: Bargteheide
183 Beiträge
 
Delphi 12 Athens
 
#3

AW: Delphi XE2/Indy 10: Umlaute bei TidHTTP werden als ? angezeigt

  Alt 28. Jun 2012, 17:47
Hallo Sebastian,

sorry, hat eine Weile gedauert, bis ich mich wieder mit diesem Thema befassen konnte...

Ich bin deinem Vorschlag gefolgt und setzte die Requests nun so ab wie von dir skizziert, um dann das Ergebnis aus dem MemoryStream mit ReadStringAsCharSet auszulesen - die Kodierung setze ich in diesem Fall manuell auf ISO-8859-1 -, und siehe da: das sind sie wieder, meine schmerzlich vermissten Umlaute... Hat also funktioniert und ich habe wieder was gelernt!

Danke dir für diesen wertvollen Tipp!

Die Indyversion ist die von XE2 mitgelieferte. Eventuell ganz vielleicht werde ich eine neuere Version aus dem SVN ziehen, wie du empfiehlst. Allerdings fühle ich mich nicht so ganz wohl dabei, da hier auch noch RemObjects-Komponenten zum Einsatz kommen, da weiß ich nicht, was passiert, wenn ich eine andere Indy-Version einspiele. Es scheint aber etwas damit zu tun zu haben, denn in einem anderen Projekt unter D2007, das die gleiche Routine nutzt, trat das Problem bisher nicht auf.

Danke dir für deine Hilfe

Udo "Kretabiker" Treichel
Udo Treichel
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:28 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