AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

UTF-8-Konvertierung Memo

Ein Thema von strom · begonnen am 29. Jun 2016 · letzter Beitrag vom 29. Jun 2016
Antwort Antwort
strom

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

UTF-8-Konvertierung Memo

  Alt 29. Jun 2016, 08:46
hallo, möchte gerne, dass alle Umlaute richtig im Memo angezeigt werden!

Delphi-Quellcode:
 var
  MSG: String;
    i: integer;
begin
 Memo1.Clear;
  MSG := Socket.ReceiveText;
   Memo1.Text := (MSG)TEncoding.UTF8; // was muss ich hier ändern, dass die Umlaute richtig Angezeigt werden?
   Memo2.Text := Memo1.Lines[8];
   Memo2.Text := StringReplace(Memo2.Text,'<message>','',[rfReplaceAll]);
   Memo2.Text := StringReplace(Memo2.Text,'</message>','',[rfReplaceAll]);
   Memo2.Text := StringReplace(Memo2.Text,'<message />','',[rfReplaceAll]);
   StringGrid1.RowCount := StringGrid1.RowCount + 1;
  for i := StringGrid1.RowCount - 1 downto StringGrid1.FixedRows + 1 do
   StringGrid1.Rows [i].Assign (StringGrid1.Rows [i - 1]);
   StringGrid1.Rows [StringGrid1.FixedRows].Clear;
   StringGrid1.Cells [1,1] := FormatDateTime ('dd.mm.yyyy', Now);
   StringGrid1.Cells [2,1] := FormatDateTime ('hh:nn:ss', Now);
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

AW: UTF-8-Konvertierung Memo

  Alt 29. Jun 2016, 10:03
Welche Delphiversion?

Unter Delphi 7 mach' ich es mit Memo1.Text := Utf8Decode(UTF8String);
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#3

AW: UTF-8-Konvertierung Memo

  Alt 29. Jun 2016, 10:14
Welche Delphi Version? (OK, TEncoding läßt fast schon auf was Neueres schließen)
Bei D2009+ und wenn und du das direkt in eine String-Variable (UnicodeString) kopierst, dann wird das bereits nach Unicode umcodiert
und das danach nochmal umzukodieren kann nur schief gehen.

Und hast du dir mal angesehn, was TEncoding für Methoden hat?
TEncoding.UTF8.Get......
Da gibt es garantiert was, wo man einen "AnsiString" (RawByteString) rein geben kann und als Result einen String (UnicodeString) raus bekommt.



Und wenn ich die vielen StringReplace sehe und auch noch einen festen Zeilenindex, dann hab ich das Gefühl hier geht etwas schief.
Man versucht das Result als TEXT auszuwerten, obwohl es wohl eher sowas wie XML? sein könnte, wofür es Komponenten gibt, die das verstehen und richtig konvertieren/verarbeiten könnten.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (29. Jun 2016 um 10:18 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.993 Beiträge
 
Delphi 12 Athens
 
#4

AW: UTF-8-Konvertierung Memo

  Alt 29. Jun 2016, 11:31
Ich denke mal, die Konvertierung geschieht schon implizit bei der Zuweisung zu MSG. Da ReceiveText als AnsiString deklariert ist, wird dabei die aktuelle CodePage verwendet. Wenn die empfangenen Daten aber UTF-8 sind, dann könnte folgender Ansatz helfen (getestet in Delphi Berlin):

Delphi-Quellcode:
   MSG := UTF8ToString(Socket.ReceiveText);
   Memo1.Text := MSG;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
strom

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

AW: UTF-8-Konvertierung Memo

  Alt 29. Jun 2016, 15:35
hallo Uwe,

es geht! Danke
  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 00:41 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