Einzelnen Beitrag anzeigen

Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.537 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Delphi 10.4 unter Linux -Unicode Encoding problem

  Alt 7. Jun 2020, 12:56
Ich vermute mal (meine es gab auch mal so eine Diskussion), das man das "Guessing" für Encondings nun evtl. abgeschafft hat (also das raten, welches Encoding der zu lesende Text hat, wenn kein BOM im Text drin ist).

Das war vormals schon so bei TStrings.loadfromfile (Datei, Encoding), wo man nur (oder sagen wir mal einfach) mit Try Except rausfinden konnte, ob ein Text nun Ansi oder UTF8 ist.

Beim Loadfromstream, hatte es (wenn ich mich nicht täusche) aber funktioniert, wegen des noch enthaltenen Guessings?

Wie auch immer, was die genauen Ursachen sind, konnte ich nicht wirklich erkunden, aber wenn ich es jetzt so mache:

Delphi-Quellcode:
 ts.position := 0;

 try
   slHlp.LoadFromStream(ts, TEncoding.UTF8);
 except
   ts.Position := 0;
   slHlp.LoadFromStream(ts, TEncoding.Ansi);
 end;
wird unter

funktioniert es...

Muss jetzt also alle Stellen abchecken, wo ich ein Loadfromstream drin habe und potentiell unklar ist, welches format der einzulesende Text hat...

Interessantwerweise funktioniert unter Windows weiterhin

slHlp.LoadFromStream(ts);

auch, wenn der Stream einen ANSI-Text enthält. Wie es sich unter MACOS stellt, habe ich noch nicht ausprobiert...

Alternativ könnte es auch sein, dass man das DefaultEncoding für Linux geändert hat.

Immer wieder schön, wie man 3-4 Stunden Zeit vertun kann...

Nachtrag: Ja, auch unter MacOS muss ich das anpassen, sonst gibt es eine entsprechende Meldung...

Na ja, unter MAC tröstet mich jetzt aber die Verwendung von Metal, was die Anzeige echt extrem beschleunigt, vor allem auf Retina Monitoren... Insofern lohnt der Umstieg auf 10.4 allemal...

Geändert von Harry Stahl ( 7. Jun 2020 um 13:30 Uhr)
  Mit Zitat antworten Zitat