Korrekte Umlaute in der DOS-Box
Inhalt:
So geht es ganz easy:
Um korrekte (deutsche) Umlaute im Textmodus (DOS-Modus oder Windows-Dosbox) darzustellen, kann man den Ausgabestream filtern:
binmode(STDOUT, ":encoding(cp437)");
Dann wird bei
print statt der (ANSI-) Codepage cp1252 die MS-DOS-Codepage (OEM) cp437 verwendet.
Das funktioniert ab Perl 5.8.
Ergänzungen, Kommentare
Man kann es noch weiter treiben und den Aufruf an eine OS-Abfrage koppeln, damit ist
es einfacher, portable Konsolenskripte zu erstellen:
binmode(STDOUT, ":encoding(cp437)") if $^O eq 'MSWin32';
Oder man schreibt dieses in ein Mini-Modul "DOSBOX.pm", was man dann in Skripte per
use DOSBOX einbinden kann:
package DOSBOX;
binmode(STDOUT, ":encoding(cp437)") if $^O eq 'MSWin32';
1;
--
ChristophBacher - 01 Jun 2005
Und wenn man die richtige Eingabe bekommen will, dann muss man das gleiche auch für STDIN machen.
--
PlTk - 12 Aug 2005
edit: Im package fehlte die "1;"
--
ChristophBacher - 15 Dec 2006