Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

PRINT unter Windows und Linux

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Berkeley



Anmeldungsdatum: 13.05.2024
Beiträge: 84

BeitragVerfasst am: 11.08.2024, 18:52    Titel: PRINT unter Windows und Linux Antworten mit Zitat

- PRINT benutzt unter Windows ja Codepage "OEM 850". Benutzt Linux automatisch UTF-8 ? Kann man die Codierung aus dem Programm raus ändern, ist es ggf. festgenagelt dass man sich auf Windows verlassen kann und was kann man sonst so tun ?

Ist ja irgendwie dumm... FBEdit benutzt auch eine andere Codierung; wenn man Text mit Umlauten ausgeben will... Und unter Linux kommt dann ja auch wieder Zeichenmüll raus.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4685
Wohnort: ~/

BeitragVerfasst am: 11.08.2024, 22:52    Titel: Antworten mit Zitat

Zitat:
- PRINT benutzt unter Windows ja Codepage "OEM 850"

Schon das ist nicht so einfach. Wenn die Quellcode-Datei in Unicode mit BOM gespeichert ist, erscheinen die Zeichen in der Windows-Konsole auch in Unicode (ja, auch die Windows-Konsole hat vor ein paar Jahren gemerkt, dass es seit ein paar Jahrzehnten Unicode gibt).

Ich habe es nicht ausgetestet, aber soweit ich es beurteile, verwendet Windows Unicode, wenn es die Daten explizit als Unicode bekommt. FreeBASIC wiederum interpretiert den Datei-Inhalt nur dann als Unicode, wenn die BOM gesetzt ist. In der Linux-Konsole ist, wenn ich mich recht erinnere, die BOM egal. Ob nun das Unicode-Problem letztendlich aufgrund der Umsetzung durch FreeBASIC oder der nur partiellen Umsetzung durch Windows liegt, weiß ich nicht.

Aber probiere es mal mit BOM.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4685
Wohnort: ~/

BeitragVerfasst am: 12.08.2024, 13:52    Titel: Antworten mit Zitat

Ach ja, ganz vergessen:

mit WCHR kannst du ein einzelnes Unicode-Zeichen ausgeben. Das mit der BOM ist nur wichtig, wenn die Unicode-(Nicht-ASCII-)Zeichen direkt im Quellcode stehen.
https://www.freebasic-portal.de/befehlsreferenz/wchr-143.html
https://www.freebasic.net/wiki/KeyPgWchr

Und dann unterstützt auch nicht jede Schriftart alle Unicode-Zeichen. Wie das mit der eingestellten Konsolenschriftart aussieht, musst du ausprobieren. (Allerdings sehe ich gerade, dass das im englischen Artikel dabeisteht.)
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Berkeley



Anmeldungsdatum: 13.05.2024
Beiträge: 84

BeitragVerfasst am: 12.08.2024, 16:42    Titel: Antworten mit Zitat

BOM bringt schon mal null. Aber Microsoft überrascht mich auch nur seltenst positiv, obwohl ich nicht gerade die höchste Meinung von ihnen habe.

Ausgabe in UTF-16 funzt scheinbar. Microsoft kann schlicht kein UTF-8. Braucht also wieder mal nen Extracode... Zum Glück braucht's PRINT nur für ein paar Konsolenausgaben...

- Und was macht Linux ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4685
Wohnort: ~/

BeitragVerfasst am: 12.08.2024, 19:37    Titel: Antworten mit Zitat

Soweit ich weiß, setzt Unix/Linux schon seit etwa 30 Jahren voll auf UTF-8.

Was intern genau passiert, kann ich nicht sagen, aber das Programm
Code:
PRINT "Hallöle €"

gespeichert in UTF-8 ohne BOM erzeugt die richtige Ausgabe. Getestet unter Debian, fbc 1.09.0, aber was die Konsolenunterstützung anbelangt, unterscheiden sich die Linux-Distributionen wohl nicht so sehr.

Die Ausgabe funktioniert bei mir aber auch unter Windows, aber nur, wenn der Quelltext mit BOM gespeichert ist.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Berkeley



Anmeldungsdatum: 13.05.2024
Beiträge: 84

BeitragVerfasst am: 12.08.2024, 22:12    Titel: Antworten mit Zitat

Ikes, wenn das stimmt, dann bestimmt der Compiler die richtige Codierung bei PRINT... Ich hab' die BOM an den Anfang meiner Strings gesetzt... Im Quelltext selbst benutz' ich eh praktisch nur ASCII, zumindest bei Releaseversionen.

Nachtrag, nach Tests: FbEdit kommt mit UTF-8 nicht klar, die BOM wird im Quelltext sichtbar ausgegeben. Beim Build kriegt der Compiler ein Problem mit Umlauten - weil FbEdit halt nicht auf UTF-8 kodiert, sondern offensichtlich ISO 8859. Unabhängig davon aber akzeptiert die Windowskonsole trotzdem kein UTF-8, dafür läuft sie auf ISO 8859, nicht mehr Codepage 850...

Grundsätzlich bin ich schon mal froh, wenn man sich drauf verlassen kann dass jede andere für mich relevante Zielplattform (Linux+Mac OS zwinkern) UTF-8 verwendet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4685
Wohnort: ~/

BeitragVerfasst am: 13.08.2024, 07:57    Titel: Antworten mit Zitat

Ich verwende Geany und bin damit äußerst zufrieden - ist halt ein Universaleditor und keine IDE spezifisch für FreeBASIC. Aber Codierungsumstellungen sind damit absolut problemlos.

Der Compiler bestimmt nicht das Verhalten von PRINT (naja, eigentlich schon grinsen ), sondern die Interpretation des Stringinhalts. Die BOM gibt dem Compiler zu verstehen, dass Strings als Unicode aufzufassen sind, in der durch die BOM festgelegten Codierung.

Ansonsten ist der richtige Datentyp der WSTRING, der von der Windowskonsole dann auch korrekt übernommen werden müsste - natürlich wieder wenn die Nicht-ASCII-Zeichen korrekt im WSTRING gelandet sind. Intern arbeitet FreeBASIC dann mit UTF-16 oder UTF-32, je nach Betriebssystem.

Und ja, durchaus möglich, dass Windows nur UTF-16 kann und kein UTF-8. Unicode ist halt noch sehr neu. durchgeknallt
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1271
Wohnort: Ruhrpott

BeitragVerfasst am: 13.08.2024, 21:53    Titel: Antworten mit Zitat

Hallo!

Zu diesem Thema hatten wir vor einigen Jahren schon einmal einen Thread.
Vielleicht findest du da etwas, was dir weiterhilft.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz