[Gelöst]: LazTermUtils: Sonderzeichen unter Windows

Rund um die LCL und andere Komponenten
Antworten
Ich934
Lazarusforum e. V.
Beiträge: 158
Registriert: So 5. Mai 2019, 16:52
OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 2.0.X, FPC 3.2.0)
CPU-Target: x86_64, i386
Wohnort: Bayreuth

[Gelöst]: LazTermUtils: Sonderzeichen unter Windows

Beitrag von Ich934 »

Hallo,

ich schreibe gerade ein Programm mit LazTermUtils für Windows. Das wird in der Kommandozeile aufgerufen. Dort werden die Sonderzeichen nicht richtig dargestellt.

Code: Alles auswählen

Term.Output.WriteModified('Bitte Eingabe tätigen:', [BoldWeight]);
Erzeugt ein: Parter zur Aufbereitung auswählen:

UTF8Decode, ansistring, UTF8ToAnsi haben keine Änderung bewirkt. Gibt es hier noch einen Trick?

Schöne Grüße
Zuletzt geändert von Ich934 am Di 17. Nov 2020, 13:42, insgesamt 1-mal geändert.
Tipp für PostgreSQL: www.pg-forum.de

Benutzeravatar
six1
Beiträge: 258
Registriert: Do 1. Jul 2010, 19:01

Re: LazTermUtils: Sonderzeichen unter Windows

Beitrag von six1 »

Hi,
ich würde mal versuchen, mit UTF8ToCP1252 zu arbeiten (in LConvEncoding).
Windows verwendet auf der Shell keine UTF8 Kodierung, soweit ich das überschaue.
Gruß, Michael

Ich934
Lazarusforum e. V.
Beiträge: 158
Registriert: So 5. Mai 2019, 16:52
OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 2.0.X, FPC 3.2.0)
CPU-Target: x86_64, i386
Wohnort: Bayreuth

Re: LazTermUtils: Sonderzeichen unter Windows

Beitrag von Ich934 »

Nein, leider nicht. Aus:

Code: Alles auswählen

WriteModified('   ' + UTF8ToCP1252('Partner zur Aufbereitung auswählen:'), []);
wird: Partner zur Aufbereitung auswõhlen:
Tipp für PostgreSQL: www.pg-forum.de

Ally
Beiträge: 164
Registriert: Do 11. Jun 2009, 09:25
OS, Lazarus, FPC: Win und Lazarus Stable release
CPU-Target: x64

Re: LazTermUtils: Sonderzeichen unter Windows

Beitrag von Ally »

Hallo,

ungetestet, aber probiere doch mal UTF8ToWinCP

Grüße Roland

Ich934
Lazarusforum e. V.
Beiträge: 158
Registriert: So 5. Mai 2019, 16:52
OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 2.0.X, FPC 3.2.0)
CPU-Target: x86_64, i386
Wohnort: Bayreuth

Re: LazTermUtils: Sonderzeichen unter Windows

Beitrag von Ich934 »

Leider nicht. :(

Code: Alles auswählen

WriteModified('   ' + UTF8ToWinCP('Partner zur Aufbereitung auswählen:'), []);
Liefert: Partner zur Aufbereitung auswõhlen:

cu tb.
Tipp für PostgreSQL: www.pg-forum.de

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

Re: LazTermUtils: Sonderzeichen unter Windows

Beitrag von theo »

Hast du diese Tipps mal durch?
https://wiki.freepascal.org/Lazarus_wit ... Windows.29

Insb. mal schauen was eigentlich los ist:

Code: Alles auswählen

  Writeln('Console output codepage: ', GetTextCodePage(Output));
  Writeln('System codepage: ', DefaultSystemCodePage);

Benutzeravatar
six1
Beiträge: 258
Registriert: Do 1. Jul 2010, 19:01

Re: LazTermUtils: Sonderzeichen unter Windows

Beitrag von six1 »

Gruß, Michael

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

Re: LazTermUtils: Sonderzeichen unter Windows

Beitrag von theo »

six1 hat geschrieben:
Di 17. Nov 2020, 10:56
ich habe noch dies gefunden:
https://wiki.freepascal.org/convert_cha ... console/de
Sieht ein bisschen umständlich und überholt aus?
Dies hier macht bestimmt das Gleiche:
https://lazarus-ccr.sourceforge.io/docs ... nsole.html

Ich934
Lazarusforum e. V.
Beiträge: 158
Registriert: So 5. Mai 2019, 16:52
OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 2.0.X, FPC 3.2.0)
CPU-Target: x86_64, i386
Wohnort: Bayreuth

Re: LazTermUtils: Sonderzeichen unter Windows

Beitrag von Ich934 »

Console output codepage: 850
System codepage: 1252

Das ja schon mal was... Eigentlich hät ich gedacht ein

Code: Alles auswählen

{$codepage cp1252}
würde das beheben. Ist aber nicht so.

Achja, es ist ein ganz normales deutsches Windows 10...
Tipp für PostgreSQL: www.pg-forum.de

Ich934
Lazarusforum e. V.
Beiträge: 158
Registriert: So 5. Mai 2019, 16:52
OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 2.0.X, FPC 3.2.0)
CPU-Target: x86_64, i386
Wohnort: Bayreuth

Re: LazTermUtils: Sonderzeichen unter Windows

Beitrag von Ich934 »

So, hier die Lösung. Folgendes gleich am Anfang des Programms einfügen:

Code: Alles auswählen

  SetConsoleOutputCP(DefaultSystemCodePage);
  SetTextCodePage(Output, DefaultSystemCodePage);
Sonst ist nichts weiteres notwendig. Kein setzen des Codepage und auch keine Compilerparameter... Jetzt ist es auch Unicode mit CP65001
Tipp für PostgreSQL: www.pg-forum.de

Warf
Beiträge: 1524
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: MacOS | Win 10 | Linux
CPU-Target: x86_64
Wohnort: Aachen

Re: [Gelöst]: LazTermUtils: Sonderzeichen unter Windows

Beitrag von Warf »

Ich füg das mal zur readme auf dem github von LazTermUtils hinzu. Mal schauen ob ich irgendwann eine funktion um die codepage einzustellen direkt in die lib einbaue (da man verschiedene Konsolen über die lib benutzen kann würde das ja Sinn machen)

Ich934
Lazarusforum e. V.
Beiträge: 158
Registriert: So 5. Mai 2019, 16:52
OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 2.0.X, FPC 3.2.0)
CPU-Target: x86_64, i386
Wohnort: Bayreuth

Re: [Gelöst]: LazTermUtils: Sonderzeichen unter Windows

Beitrag von Ich934 »

Stimmt. Wäre ne gute Idee. Und danke für die Lib. Hat mir viel Arbeit erspart. :-)
Tipp für PostgreSQL: www.pg-forum.de

Antworten