AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Unicode-Daten richtig empfangen???

Unicode-Daten richtig empfangen???

Ein Thema von romber · begonnen am 21. Feb 2010 · letzter Beitrag vom 23. Feb 2010
Antwort Antwort
Seite 2 von 2     12
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.166 Beiträge
 
Delphi 10 Seattle Professional
 
#11

Re: Unicode-Daten richtig empfangen???

  Alt 22. Feb 2010, 11:41
Ich werde verrückt mit dieser Unicode, echt! Haben die aktuelle Indys immer noch Probleme mit Unicode oder wo liegt das Problem?
  Mit Zitat antworten Zitat
tinof

Registriert seit: 16. Sep 2009
Ort: Kirchberg / Sa.
12 Beiträge
 
Delphi 2009 Professional
 
#12

Re: Unicode-Daten richtig empfangen???

  Alt 22. Feb 2010, 14:49
Zitat:
Diese Zeichen gehen verloren und werden durch Fragezeichen ersetzt.
Wo? Im Debugger gesehen oder bei der Weiterverarbeitung - z.B. savetofile() o.ä.?

Für Savetofile() gibt es beispielsweise jetzt überladene Versionen, bei denen man das Encoding mit angeben kann, so in der Art

responsestream.savetofile('meinfile.txt',TEncoding.UTF8) (Bitte in der Hilfe die genaue Syntax nachschlagen).


Viel Erfolg!

Tino

P.S. Unicode & Delphi9 und Indy 10x geht prinzipiell, es ist imho kein Bug oder Versionsproblem.
Ich hab's gleich!

... sagte der Programmierer
  Mit Zitat antworten Zitat
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.166 Beiträge
 
Delphi 10 Seattle Professional
 
#13

Re: Unicode-Daten richtig empfangen???

  Alt 22. Feb 2010, 17:27
Zitat von tinof:
Wo? Im Debugger gesehen oder bei der Weiterverarbeitung - z.B. savetofile() o.ä.?
Beim SaveToFile bekomme ich schon die Fragezeichen.
Es ist einfach zum k...zen mit diesem Unicode!
Leute! Hilfe! Was muss ich dem IdHTTP beibringen, damit er Unicode-Seiten richtig liefert?
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#14

Re: Unicode-Daten richtig empfangen???

  Alt 22. Feb 2010, 17:55
Hi romber,

Zitat von romber:
Ich sende mit IdHTTP Anfragen an einen Webservice an und erhalte die Daten, die auch Unicode-Zeichen enthalten. Diese Zeichen gehen verloren und werden durch Fragezeichen ersetzt. Wie empfange ich die Unicode-Daten richtig?
Zitat von romber:
Leute! Hilfe! Was muss ich dem IdHTTP beibringen, damit er Unicode-Seiten richtig liefert?
Nichts. Hat auch nichts mit Indy zu tun: Schau Dir ggf. mal die Delphi Hilfe in Delphi 2009/2010 für TStringStream.Create() an:

Per Default sind StringStreams & Co mit Encoding vom Typ TEncoding.ASCII erzeugt.

Du erzeugst also einen ASCII (!) StringStream und füllst diesen mit Unicode Daten (in diesem Fall wahrscheinlich UTF8). Das das jetzt Indy ist, was den Stream füllt, ist für das Problem egal.

Delphi-Quellcode:
ResponseStream := TStringStream.Create('', TEncoding.UTF8); // <-- Encoding setzten!
RequestStream := TStringStream.Create; // hier ggf. auch
RequestStream.WriteString(SERVICE_REQUEST_XML);
try
  http.Post(WEB_SERVICE_URL, RequestStream, ResponseStream);
except
...
end;
[Abschweifen]
Du hast hier an verschiedenen Stellen mögliche Encodings:

Client:
- RequestStream (Delphi)
- RepsonseStream (Delphi)
- HTTP Transfer Klasse (Indy)

Server
- Webseiten Encoding
- Form Encoding (kann von Webseitenencoding abweichen!)

Beiseitig:
- Das Datei Encoding des XML und zusätzlich auch das Inline Encoding (aus dem XML Tag)

Um die Verwirrung komplett zu machen, gibt es in Indy auch noch die Content Charsets und Encodings.
[/Abschweifen]


Hab aber gerade Deinen Code getestet - funktioniert mit UTF8 ohne Probleme.

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.166 Beiträge
 
Delphi 10 Seattle Professional
 
#15

Re: Unicode-Daten richtig empfangen???

  Alt 22. Feb 2010, 22:40
Super! An den Indys lag es wirklich nicht, habe umsonst geschimpft
Habe der Stream das Encoding gesetzt, wie Assertor empfohlen hat, und schon ging's.

Vielen Dank an alle!
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#16

Re: Unicode-Daten richtig empfangen???

  Alt 23. Feb 2010, 16:36
Hi romber,

Zitat von romber:
Super! An den Indys lag es wirklich nicht, habe umsonst geschimpft
Habe der Stream das Encoding gesetzt, wie Assertor empfohlen hat, und schon ging's.
Das freut mich und danke für das Feedback!

Gruß,
Assertor

Frederik
  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:47 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