![]() |
Problem mit Textcodierung bei Indy TCP Client / Server
Hallo,
ich arbeite derzeit an zwei Anwendungen, die die Indy TCP-Komponenten nutzen. Nach Empfang von "einfachen" Texten fällt auf, dass bestimmte Zeichen nicht korrekt dargestellt werden. Ich habe versucht, diese mittels
Delphi-Quellcode:
korrekt darzustellen - leider bislang erfolglos.
indytextencoding_xxx
Mein Wissensstand ist, dass Indy ANSI-kodiert arbeitet, wenn nichts anderes ausgewählt. Richtig? Aktuell geht es um Anführungszeichen und Umlaute, die als Fragezeichen (?) dargestellt werden. Text wird so verschickt:
Delphi-Quellcode:
IdTCPClient.IOHandler.WriteLn('Text mit Umlauten innerhalb von Anführungszeichen: "öäü"');
Hierüber wird "gelesen":
Delphi-Quellcode:
Ausgabestring := IdTCPClient.IOHandler.ReadLn();
Der "Ausgabestring" zeigt sich dann wie folgt: "Text mit Umlauten innerhalb von Anführungszeichen: ?????" Ich bin ehrlich gesagt, auch nach etlichen Seiten lesen, nicht wirklich klüger was Textcodierungen angeht :oops: Hätte jemand Gedanken hierzu, wie ich das lösen kann? Besten Dank Gruß Andy Delphi 10.4 Indy 10.6.2.0 |
AW: Problem mit Textcodierung bei Indy TCP Client / Server
.. merkwürdig, dass das 'ü' in Anführungszeichen richtig übertragen wurde.
Grüße Klaus |
AW: Problem mit Textcodierung bei Indy TCP Client / Server
:lol:Das passiert, wenn man es per Hand eintipp. Natürlich ist jedes "ü" fehlerhaft...
|
AW: Problem mit Textcodierung bei Indy TCP Client / Server
Ich finde es komisch, dass das ohne Angabe eines Encodings nicht auf beiden Seiten mit dem gleichen Standardwert klappt. Du kannst es aber einmal explizit mit UTF-8 Kodierung versuchen. Readln und Writeln unterstützen beide als zweiten Parameter das Encoding, z.B. würde ich es mit IndyTextEncoding_UTF8 aus der Unit IdGlobal versuchen und das bei beiden Funktionen übergeben.
|
AW: Problem mit Textcodierung bei Indy TCP Client / Server
Ich würde vermuten es handelt sich bei deinem Problem um eine Codepage-Konvertierung. Wenn zum Beispiel ein String, welcher ein Euro-Zeichen (€) enthält, in die Codepage 850 konvertiert wird, steht an der Stelle des €-Zeichens ein Fragezeichen, weil die Codepage 850 kein €-Zeichen enthält.
So bringt folgendes Programm
Delphi-Quellcode:
folgende Ausgabe
Type AnsiStr720 = Type AnsiString(720);
Procedure Test; Var uString : Unicodestring; aString : AnsiStr720; begin uString := 'Text mit Umlauten innerhalb von Anführungszeichen: "öäü"'; Writeln(uString); aString := uString; Writeln(aString); end;
Code:
weil es in der
Text mit Umlauten innerhalb von Anführungszeichen: "öäü"
Text mit Umlauten innerhalb von Anf?hrungszeichen: "???" ![]() Es könnte sich also bei Dir um eine Codepage handeln, die weder Umlaute noch das doppelte Anführungszeichen enthält um so ein Ergebnis wie von Dir beschrieben zu erhalten. |
AW: Problem mit Textcodierung bei Indy TCP Client / Server
Hallo und danke für Eure Gedanken.
Ich habe nun im Test-Server, sowie Clienten auf
Delphi-Quellcode:
gestellt. Damit funktioniert es prima.
IndyTextEncoding_OSDefault
Gruß Andy |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz