Windows und Linux Umlaute

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
elektronenschubser
Beiträge: 4
Registriert: So 25. Mai 2014, 16:41

Windows und Linux Umlaute

Beitrag von elektronenschubser »

Hallo Leute,
Ich bin erst seit kurzem von Delphi auf Lazarus umgestiegen und habe ein Problem mit der Darstellung von Umlauten.
Ich übergebe einen Text an ein IPhtmlpanel, der dann später zum Drucker geschickt wird. Unter Windows funktioniert alles wunderbar.

Wenn ich dasselbe Programm jedoch unter Linux kompiliere kommt bei den Sonderzeichen nur Mist raus.

Gruß Andreas

Code: Alles auswählen

 
procedure test;
var
 FB : string;
 html: TIpHtml; 
 ms:TMemoryStream;
 
begin
 FB:='<html> Blöder weißer Text </html>';
 FB:=utf8decode(FB);
 html:=TIpHtml.Create;
 ms:=TMemoryStream.Create;
 ms.Write(FB[1],Length(FB));
 ms.Position:=0;
 html.LoadFromStream(ms);
 IpHtmlPanel1.SetHtml(html);
 ms.free;
end;

creed steiger
Beiträge: 958
Registriert: Mo 11. Sep 2006, 22:56

Re: Windows und Linux Umlaute

Beitrag von creed steiger »

Was zeigt den

echo $LC_CTYPE

oder

echo $LANG

elektronenschubser
Beiträge: 4
Registriert: So 25. Mai 2014, 16:41

Re: Windows und Linux Umlaute

Beitrag von elektronenschubser »

echo $LANG ergibt: de_DE.UTF-8

Gruß Andreas

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Windows und Linux Umlaute

Beitrag von Christian »

Du solltest in HTML Umlaute korrect kodieren. Also ü für ü u.s.w.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

elektronenschubser
Beiträge: 4
Registriert: So 25. Mai 2014, 16:41

Re: Windows und Linux Umlaute

Beitrag von elektronenschubser »

Gibts da eine fertige Funktion dafür, oder muss ich das selbst basteln?

Und warum gehts dann mit Windows?

Gruß Andreas

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

Re: Windows und Linux Umlaute

Beitrag von theo »

Code: Alles auswählen

procedure test;
begin
 Form1.IpHtmlPanel1.SetHtmlFromStr('<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8" /></head><body>Blöder weißer Text </body></html>');
end;     
HTML hat auch seine Regeln. :wink:

elektronenschubser
Beiträge: 4
Registriert: So 25. Mai 2014, 16:41

Re: Windows und Linux Umlaute

Beitrag von elektronenschubser »

Super, Danke, das funktioniert jetzt.

Aber warum tut's unter Windows auch ohne die "charset" Definition?

Gruß Andreas

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

Re: Windows und Linux Umlaute

Beitrag von theo »

elektronenschubser hat geschrieben: Aber warum tut's unter Windows auch ohne die "charset" Definition?
Mehr oder weniger Zufall. Du machst sowieso einen Fehler.
Der Rückgabewert von UTF8Decode(FB) ist kein (Ansi-)String, wie bei deinem Code, sondern eine UnicodeString oder WideString.
Das ist also sowieso falsch. Bei Linux ist halt UTF-8 default und bei Win Latin1 oder ein anders Ansi-Charset.
Also wie gesagt ein Folgefehler. Man könnte das noch vertiefen, aber da habe ich jetzt keine Lust dazu. :wink:

Antworten