Seite 1 von 1

Umlaute

Verfasst: Mi 18. Sep 2019, 08:18
von Martin-11
Hallo Zusammen,

mein Name ist Martin und ich bin schon etwas älter ;)
Früher in QB4, später in VB6 programmiert.
Mein neuer Rechner hat (leider) Windows 10 – 64-bit und ich habe noch ein „altes“ DOS-Programm.
Gestern die DOS Box 0.74 installiert und erfreulich festgestellt, dass diese unter 64-Bit lief und ich mein DOS Programm starten konnte.
Mein Problem ist folgendes:
Ö-ö geht, Ä-ä und Ü-ü geht nicht.
Kann man irgendwo etwas einstellen?
Auszug aus config-Datei (ist fast original übernommen)
language=
machine=svga_s3
captures=capture
memsize=16
[autoexec]
mount w: w:\
w:
cd stefan\rfakt40
rfakt40
exit

Vielen Dank im Vorraus
Martin

Re: Umlaute

Verfasst: Mi 18. Sep 2019, 10:05
von Roman78
Was kommen den für Zeichen wenn du die Tasten drückst?

Hast du das Keyboard Layout angepasst, geladen: https://www.dosbox.com/wiki/KEYB

Re: Umlaute

Verfasst: Mi 18. Sep 2019, 12:01
von Martin-2
in der Config steht nur
keyboardlayout=auto

Sollte ich oder [Dos] folgendes einfügen?
KEYB sv 437


öÖ klappt, bei äÄüÜ kommt nicht.

Auf dem "alten" Rechner Win10-32bit klappt alles, Fehler ist nur bei dem "neuen" Rechner Win10-64bit.

Re: Umlaute

Verfasst: Mi 18. Sep 2019, 12:34
von schubl
Warum willst Du auf Schwedisch stellen?
Du kannst entweder im Abschnitt

Code: Alles auswählen

[DOS]
keyboardlayout=gr
eintragen, oder im Abschnitt

Code: Alles auswählen

[autoexec]
keyb gr
schubl

Re: Umlaute

Verfasst: Mi 18. Sep 2019, 13:29
von Martin-11
Hallo schubl

"schwedisch" war nur als Beispiel

[DOS]
keyboardlayout=gr
....hat nichts gebracht

[autoexec]
keyb gr
... hat leider auch nichts gebracht

bei äÄüü komm nichts

Re: Umlaute

Verfasst: Mi 18. Sep 2019, 15:16
von Gamepower
versuche mal....

mode con 850

oder so... habe gerade den befehl nicht im kopf, wie man die codepage noch einmal einstellt...

Re: Umlaute

Verfasst: Mi 18. Sep 2019, 16:01
von Osmodia
In der dosbox.conf:

[dos]
...
keyboardlayout=de

Re: Umlaute

Verfasst: Mi 18. Sep 2019, 16:06
von Martin-11
meinst du so:
mode con codepage select=850
... hat nicht gebracht.


Was ich aber festgestellt habe, ist folgendes auf der Tastatur (nicht Zehnertastur):
wenn .. drückt, dann wird .. angezeigt.
+ ==> ü [super]
shift + ==> Ü
# ==> + [reicht mir auf der 10er Tas.]
shift # ==> *

Somit fehlt mir nur noch ö/Ö

Re: Umlaute

Verfasst: Mi 18. Sep 2019, 16:10
von Martin-11
Hallo Osmodia

keyboardlayout=de
hat auch nicht geholfen, keine Veränderung.

Re: Umlaute

Verfasst: Mi 18. Sep 2019, 16:22
von Osmodia
Dann stimmt was mit deiner DOSBox nicht, denn genau so und nicht anders geht das bei DOSBox 0.74. Wobei es auch mit "keyboardlayout=auto" schon gehen sollte, das ist der Standardwert.

Du hast aber schon eine deutsche Version von Windows und dort auch alles auf Deutsch gestellt?

Re: Umlaute

Verfasst: Do 19. Sep 2019, 08:16
von Martin-11
Hallo Osmodia,

denke schon, dass mit der DOSBox alles stimmt.
Rechner ist alles auf deutsch eingestellt.
Was mich wundert, ist das nur ein Umlaut nicht funktioniert.
Vielleicht werde ich mal die Tastatur tauschen.

Gruß Martin

Re: Umlaute

Verfasst: Sa 21. Sep 2019, 19:49
von Martin-11
Hallo
ich versuche mal anders an die Sache zu gehen.
Ich möchte den Tastaturwert auslegen und ausgeben, in etwas so:
lese Taste
Print KeyCode bzw. chr$(keycode)

Ich finde keinen Befehl zum Tastenauslesen unter QB4 , kann mir hier jemand helfen?

Gruß Martin

Re: Umlaute

Verfasst: Sa 21. Sep 2019, 20:08
von Martin-11
habs gefunden... inkey$

zeigt aber bei der Taste Ü auch nicht an.

war ein Versuch wert

Re: Umlaute

Verfasst: Mo 30. Mai 2022, 19:02
von Mitfühlender
Könnte das auch mit Unicode 16 Bit unter Windows zusammen hängen?

Habe das gleiche Problem. A..Z, a..z funktionieren, einige Sonderzeichen und ß, ä,ö,ü,Ä,Ö,Ü nicht und in einer Ascii Datei erschinen diese Zeichen als 2 Zeichen, die funktionierenden Zeichen bestehen auch einem einzigen Zeichen. Auch dann brigens, wenn ich als Ausgabtyp einen 8 bittigen String nehme.

Re: Umlaute

Verfasst: Mo 30. Mai 2022, 21:45
von mkarcher
Mitfühlender hat geschrieben: Mo 30. Mai 2022, 19:02 Könnte das auch mit Unicode 16 Bit unter Windows zusammen hängen?

Habe das gleiche Problem. A..Z, a..z funktionieren, einige Sonderzeichen und ß, ä,ö,ü,Ä,Ö,Ü nicht und in einer Ascii Datei erschinen diese Zeichen als 2 Zeichen, die funktionierenden Zeichen bestehen auch einem einzigen Zeichen. Auch dann brigens, wenn ich als Ausgabtyp einen 8 bittigen String nehme.
Ja, mit Unicode schon, aber nicht mit dem 16-Bit-Unicode aus der Windows-Welt. Lass mich einmal ein bisschen zum Thema Unicode ausholen: Unicode ist zunächst einmal ein Zuweisung von Zeichennummern (Ganzzahlen) zu Bedeutungen ("Leerzeichen", "obere Hälfte Integral", "hebräischer Buchstabe Dalet", "lateinischer Buchstabe großes A"). Unicode wurde eingeführt, damit den verschiedenen Codepages (verschiedene Zeichensätze für Amerika mit vielen Grafikzeichen (437), Westeuropa (850), Osteuropa, Russisch, Griechisch, Türkisch, Hebräisch) ein Ende zu setzen, und einen unversell gültigen Zeichensatz zu bekommen. Dabei ist man zunächst davon ausgegangen, dass 65536 Zeichennummern reichen werden. Spätestens, als die CJK-Unification gescheitert ist (wo geplant war, dass gleiche/ähnliche Zeichen aus Chinesich, Japanisch und Koreanisch nur eine einzige Unicode-Nummer bekommen), wurde aber ein Bedarf für mehr Zeichen festgestellt. Da hatte Microsoft in COM/OLE unter Windows 3.x aber bereits 16-Bit-Unicode umgesetzt. Die Darstellung von Unicode-Zeichennummern zwischen 0 und 65535 als 16-Bit-Zahl nennt sich UCS-2 (Unicode Coding Scheme, 2 bytes per character). Auf 32-Bit-Unix-Maschinen war Unicode-Unterstützung direkt mit 32-Bit-Zahlen vorgesehen, das System nennt sich UCS-4, und könnte theroretisch 4 Milliarden verschiedene Zeichen darstellen, wobei nur der positive Bereich von vorzeichenbehafteten 32-Bit-Zahlen zur Benutzung als Unicode-Nummern gedacht war, wodurch nur 2 Milliarden Werte übrig bleiben.

Alle Textdateien mit 4 Byte pro Zeichen zu kodieren kam aber nicht in Frage, deshalb wurde ein Speicher/Übertragungs-Format auf Basis von 8-Bit-Symbolen entworfen, UTF-8 ("Unicode Transformation Format, 8 bits). Dieses Format erlaubt es 7-bit-ASCII-Zeichen in einem Byte darzustellen, europäische Umlaute, kyrillische und hebräische Zeichen mit 2 Byte, alle sonsitigen 16-Bit-Unicode-Zeichen mit 3 Byte, und Zeichen mit Zeichen mit noch größeren Nummern in 4 (bis zu 21 Bit), 5 (bis zu 26 Bit) oder 6 (bis zu 31 Bit) Bytes dargestellt werden. Das das System nicht zu UCS-2 passt, was mit 16-Bit-Einheiten arbeitet, aber durch die Nutzung unter anderem in MS-COM/OLE UCS-2 schon sehr weit verbreitet war, wurde auch eine Erweiterung zu UCS-2 entwickelt. Nicht alle Zahlen unter 65536 waren zu dem Zeitpunkt bereits mit Zeichen versehen, und daher wurde dann im 16-Bit-Bereich ein Bereich von 2048 Zeichen reserviert. 1024 davon heißen "high surrogates" (hohe Ersatzzeichen), und die anderen 1024 "low surrogates" (niedriege Ersatzzeichen). Diese Zeichen treten immer paarweise auf, und ergeben zusammen ein 20-Bit-Nummer für ein "erweitertes Unicode-Zeichen". Das Verfahren, mit Hilfe von Surrogates etwas mehr als eine Million Zeichen darstellen zu können, nennt sich jetzt UTF-16, und definiert den gültigen Zeichenvorrat von Unicode. Es gibt 2^16 Basiszeichen (mit Löchern im Raum, z.B. für die Surrogates) und 2^20 Erweiterungszeichen, so dass eine Unicode-Zeichennummer immer zwischen 0 und 2^16 + 2 ^ 20 - 1 liegt, und damit mit 21 Bits darstellbar ist. Damit wurden dann die 5-Byte und 6-Byte-Formate von UTF-8 ebenfalls obsolet.

Was wir heute also haben, ist "Windows 16-Bit-Unicode" als Bezeichnung für UTF-16, und "UTF-8". Textdateien, in denen US-Zeichen ein Byte belegen, und deutsche Umlaute 2 Byte, sind also UTF-8-kodiert, nicht UTF-16-kodiert. UTF-8 hat sich als das Standardformat für Unicode-Textdateien überall da durchgesetzt, wo Kompatibilität mit UCS-2 nicht notwendig ist. Man sieht die zwei-Byte-Darstellung von Umlauten in UTF-8-kodierten Textdateien dann als zwei Zeichen fehlinterpretiert, zum Beispiel bei Interpretation der Byte-Werte als 8-Bit-Zeichennummern gemäß Codepage 437 (DOS) oder Codepage 1252 (Windows-8-Bit-Zeichensatz "Westeuropa").