Linux - Fehlermeldung "Invalid UTF8-String" ? [gelöst]

Rund um die LCL und andere Komponenten
Antworten
MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Linux - Fehlermeldung "Invalid UTF8-String" ? [gelöst]

Beitrag von MmVisual »

Hallo,

Ich habe mal meine EXE unter Linux in der Konsole gestartet. Da kamen ein paar Fehler, die konnte ich auch beheben.

Aber bei dem einen Fehler:
(EleLa:4827): Pango-WARNING **: Invalid UTF-8 string passed to pango_layout_set_text()

weiß ich nicht wo ich suchen soll. Eigentlich sollten alle Texte UTF8 codiert sein.

Suse 12.1-64 Lazarus 1.1/FPC2.6.0

Vielen Dank für eure Hilfe.

Grüße Markus
Zuletzt geändert von MmVisual am Mi 1. Aug 2012, 09:33, insgesamt 1-mal geändert.
EleLa - Elektronik Lagerverwaltung - www.elela.de

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Linux - Fehlermeldung "Invalid UTF8-String" ?

Beitrag von MmVisual »

Ich denke ich habe das heraus gefunden.

Ich mache bei einem längeren String vor der Anzeige ein Copy(s, 1, 250).
Wenn jetzt genau an der Position 250 ein Zeichen steht, das 2 oder mehr Bytes benötigt, dann wird das UTF8 Zeichen ungültig :-(

Jetzt weiß ich nur noch nicht so genau wie ich das richtig umgehe.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Linux - Fehlermeldung "Invalid UTF8-String" ?

Beitrag von Socke »

MmVisual hat geschrieben:Jetzt weiß ich nur noch nicht so genau wie ich das richtig umgehe.
Du schaust dir nach dem Copy() das letzte Byte an; wenn es ein Byte eines Multi-Byte-Characters ist (höchstwertigstes Bit gesetzt), entfernst du es (und [url=und alle dazugehörigen Vorhergehenden]alle dazugehörigen Vorhergehenden[/url]).
Die Alternative ist, die fehlenden Bytes auch noch an deinen String anzuhängen (sofern das dein Datenmodell vom Speicher her zulässt).
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
theo
Beiträge: 10905
Registriert: Mo 11. Sep 2006, 19:01

Re: Linux - Fehlermeldung "Invalid UTF8-String" ?

Beitrag von theo »

Oder du benutzt einfach UTF8Copy in Unit LazUTF8

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Linux - Fehlermeldung "Invalid UTF8-String" ?

Beitrag von MmVisual »

Vielen Dank, Theo,

UTF8Copy, auf die Idee kam ich auch schon. Hat bei mir nicht geklappt, da die passende Unit man auch einbinden (und kennen) sollte. ;-)
Jetzt ist diese Wissenslücke auch geschlossen.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Antworten