AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Socket Memo Umlaute

Ein Thema von strom · begonnen am 13. Jan 2016 · letzter Beitrag vom 14. Jan 2016
Antwort Antwort
strom

Registriert seit: 23. Aug 2008
Ort: Keine Ergebnisse gefunden
290 Beiträge
 
#1

Socket Memo Umlaute

  Alt 13. Jan 2016, 12:19
Hallo,

im Memo werden die Umlaute richtig dargestellt, aber nicht übertragen! Es wird immer ein ? dargestellt.

Warum?


Delphi-Quellcode:
 var
 s: AnsiString;
begin
  try
   ClientSocket.Open;
    s := String.Format('<event>'#10'<address>%s</address>'#10'<message>%s</message>'#10'</event>',[Edit1.Text,Memo4.Text]);
    ClientSocket.Socket.SendText(s);
     finally
      ClientSocket.Close;
     Disconnect.Enabled := true;
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Socket Memo Umlaute

  Alt 13. Jan 2016, 12:38
SendText arbeitet mit AnsiStrings.
Du musst dir eine Codierung überlegen (z.B. UTF8) die keinen Datenverlust bei der Wandlung nach Ansi-Strings verursacht und dam beim Empfänger wieder zurückwandeln.

Übrigens wäre es ganz gut wenn man Compilerwarnungen beachtet. Dies solltest du bekommen wenn du eine halbwegs aktuelle Delphi-Version (ab D2009) verwendest.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
strom

Registriert seit: 23. Aug 2008
Ort: Keine Ergebnisse gefunden
290 Beiträge
 
#3

AW: Socket Memo Umlaute

  Alt 13. Jan 2016, 12:52
Hey,

habe Delphi Xe7 im Betrieb ....

aber der String(s) ist doch ein AnsiString! ist doch Formatiert (Utf8Encode) oder nicht?

Wie könnte so eine Umwandlung aussehen?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Socket Memo Umlaute

  Alt 13. Jan 2016, 13:52
String -> Codieren mit UTF8 in einen Stream -> Senden
Empfangen -> Stream -> Decodieren mit UTF8 in einen String

Delphi-Referenz durchsuchenTStringStream
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (13. Jan 2016 um 13:54 Uhr)
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
972 Beiträge
 
Delphi 6 Professional
 
#5

AW: Socket Memo Umlaute

  Alt 13. Jan 2016, 19:16
Hey,

habe Delphi Xe7 im Betrieb ....

aber der String(s) ist doch ein AnsiString! ist doch Formatiert (Utf8Encode) oder nicht?

Wie könnte so eine Umwandlung aussehen?
Hmm,
AnsiString := Unicode ergibt doch meines Wissen kein UTF8-Code!
Und Edit1.Text,Memo4.Text sind UniCode und können Zeichen enthalten, welche nicht nach ANSI übertragen werden können, dann gibt es glaube ich die '?'...

Mach mal

s := Utf8Encode(String.Format('<event>'#10'<address>%s</address>'#10'<message>%s</message>'#10'</event>',[Edit1.Text,Memo4.Text]));

Denn String.Format sollte bei Dir nen UniCode-String liefern..
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#6

AW: Socket Memo Umlaute

  Alt 14. Jan 2016, 07:25
Außerdem ist das kein XML, sondern sieht nur so aus. Die Gegenstelle muss wissen, das UTF-8 verwendet wird (oder sonst eine Codierung). Dann kann man auch gleich auf XML verzichten und das mit einem selbstgestrickten Format versenden (wieso nicht binär oder als ZIP?). Oder JSON, dann fällt wenigstens der Overhead von XML weg.
  Mit Zitat antworten Zitat
strom

Registriert seit: 23. Aug 2008
Ort: Keine Ergebnisse gefunden
290 Beiträge
 
#7

AW: Socket Memo Umlaute

  Alt 14. Jan 2016, 22:15
Hallo,

die Meldungen sollen im XML-Format (UTF-8) vorliegen.

Wie muss der String dann ausehen?

s := Utf8Encode(String.Format('<event>'#10'<address>%s</address>'#10'<message>%s</message>'#10'</event>',[Edit1.Text,Memo4.Text]));
  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 22:29 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