Umlaute im DOS-Fenster

Umlaute im DOS-Fenster

am 17.05.2005 19:05:36 von KWittrock

Hallo,

ich ärgere mich darüber, wie im DOS-Fenster die Umlaute meiner
Print-Meldungen verhunzt werden. Es wäre ja kein Problem, eine Sub printDOS
zu schreiben, die die erforderlichen Ersetzungen vornimmt. Aber da sind ja
noch die französischen Akzente, die spanischen Sonderzeichen, die nordischen
Umlaute, die slawischen Sonderzeichen, und und und .... Da wird die Sache
schon aufwändiger. Andererseits ist der DOS-Zeichensatz begrenzt, so dass
auch die Zahl der Ersetzungen begrenzt ist. Ich könnte mir gut vorstellen,
dass es da im CPAN schon was Fertiges gibt. Für einen Tipp wäre ich dankbar.

Hier schon mal meine rudimentäre Ersetzungsliste:
sub printDOS {
my $charANSI = join '', qw(
Ä Ö Ü ä ö
ü ß é
);
my $charDOS =
chr(0x8e).chr(0x99).chr(0x9a).chr(0x84).chr(0x94).
chr(0x81).chr(0xe1).chr(0x82)
;
$_ = $_[0];
eval "tr/$charANSI/$charDOS/";
print $_;
}
Den DOS-Kode eines Zeichens ermittle ich nach dem Muster
perl -e "printf '%x', ord(`echo ä`)"

Gruß
Klaus

Re: Umlaute im DOS-Fenster

am 17.05.2005 20:22:44 von Wolf Behrenhoff

K. Wittrock wrote:
> Hallo,
>
> ich ärgere mich darüber, wie im DOS-Fenster die Umlaute meiner
> Print-Meldungen verhunzt werden.

Werden sie aber nur, wenn du einen Editor zum Schreiben verwendest, der
ein anderes Charset nutzt. Schreibst du etwa mit dem DOS-Editor, so hast
du kein Problem.

> Es wäre ja kein Problem, eine Sub printDOS
> zu schreiben, die die erforderlichen Ersetzungen vornimmt. Aber da sind ja
> noch die französischen Akzente, die spanischen Sonderzeichen, die nordischen
> Umlaute, die slawischen Sonderzeichen, und und und .... Da wird die Sache
> schon aufwändiger. Andererseits ist der DOS-Zeichensatz begrenzt, so dass
> auch die Zahl der Ersetzungen begrenzt ist. Ich könnte mir gut vorstellen,
> dass es da im CPAN schon was Fertiges gibt. Für einen Tipp wäre ich dankbar.

So geht es:

use Encode;
$_="ÄÖÜ\n";
print "Original: $_";
print encode("cp437",decode("latin1",$_));

Du musst natürlich hier entsprechend dem, was du benutzt, die Charsets
ändern.

perldoc Encode
hilft dir.

Wolf

Re: Umlaute im DOS-Fenster

am 17.05.2005 20:24:11 von Fabian Pilkowski

* K. Wittrock schrieb:
>
> ich ärgere mich darüber, wie im DOS-Fenster die Umlaute meiner
> Print-Meldungen verhunzt werden. Es wäre ja kein Problem, eine Sub printDOS
> zu schreiben, die die erforderlichen Ersetzungen vornimmt. Aber da sind ja
> noch die französischen Akzente, die spanischen Sonderzeichen, die nordischen
> Umlaute, die slawischen Sonderzeichen, und und und .... Da wird die Sache
> schon aufwändiger. Andererseits ist der DOS-Zeichensatz begrenzt, so dass
> auch die Zahl der Ersetzungen begrenzt ist. Ich könnte mir gut vorstellen,
> dass es da im CPAN schon was Fertiges gibt. Für einen Tipp wäre ich dankbar.

Selbstverständlich hat sich bereits vor Dir schon mal jemand mit den
verschiedenen Zeichensatz-Codierungen auseinandergesetzt. Unter Perl
verwendet man in der Regel das Modul Encode.pm um Strings von einer
Codierung in eine andere zu transformieren. Allerdings muss man dazu
logischerweise wissen, mit welcher Codierung man es zu tun hat. Die
Windows-Eingabeaufforderung verwendet auf meinem System per default den
Windows-Zeichensatz "cp850" (`chcp` hilft dies herauszufinden).

use Encode;
print 'äéç => ', encode( 'cp850', 'äéç' );
__END__
õÚþ => äéç

Wenn Du ein neueres Perl verwendest (ich weiß gerade nicht, ab welcher
Version Perl I/O-Layer unterstützt), geht es sogar noch bequemer: Man
kann ein Filehandle gezielt so einstellen, dass es die Daten automatisch
umwandelt (siehe zB `perldoc -f binmode`).

print 'äéç => ';
binmode STDOUT, ':encoding(cp850)';
print 'äéç';
__END__
õÚþ => äéç

gruß,
fabian

Re: Umlaute im DOS-Fenster

am 18.05.2005 21:42:40 von Martin Mohr

K. Wittrock wrote:
> Hallo,
>
> ich ärgere mich darüber, wie im DOS-Fenster die Umlaute meiner

Man kann die Konsole (zumindest unter W2k) auch mit chcp 1252 auf eben
jene Codepage umschalten. Die ist so ähnlich wie 8859-1. Man muss dann
auch eine andere Schrift als "Rasterschriftart" einstellen. Bei mir wird
nur Lucida Console angeboten. Natürlich thematisch hier nicht passend etc.

Ciao
Martin

Re: Umlaute im DOS-Fenster

am 19.05.2005 21:24:28 von KWittrock

Fabian Pilkowski schrieb:
>
> * K. Wittrock schrieb:
> >
> > ich ärgere mich darüber, wie im DOS-Fenster die Umlaute meiner
> > Print-Meldungen verhunzt werden.
> .....
> .... Man
> kann ein Filehandle gezielt so einstellen, dass es die Daten automatisch
> umwandelt (siehe zB `perldoc -f binmode`).
>
> print 'äéç => ';
> binmode STDOUT, ':encoding(cp850)';
> print 'äéç';
> __END__
> õÚþ => äéç

Das ist ja erheblich komfortabler als ich dachte (nur das Wort binmode stört
mich etwas in diesem Zusammenhang). Vielen Dank!

Nur der Vollständigkeit halber noch eine Frage (ich werde das sicherlich
bald brauchen): Kann man feststellen, ob STDOUT ins DOS-Fenster schreibt?
Oder noch besser: kann man das gegenwärtig für ein Filehandle wirksame
Encoding feststellen? Ich möchte ja nicht "normale" Dateien auf cp850
umschalten (und Pipes auch nicht).

Gruß

Klaus

Re: Umlaute im DOS-Fenster

am 19.05.2005 21:44:22 von KWittrock

"Martin Mohr" schrieb im Newsbeitrag
news:d6g5mi$7jh$05$1@news.t-online.com...
> K. Wittrock wrote:
> > Hallo,
> >
> > ich ärgere mich darüber, wie im DOS-Fenster die Umlaute meiner
>
> Man kann die Konsole (zumindest unter W2k) auch mit chcp 1252 auf eben
> jene Codepage umschalten. Die ist so ähnlich wie 8859-1.

Ich hab das eben mal ausprobiert. Bei mir (Win NT) ändert sich dadurch
nichts. Im Gegenteil: jetzt wird auch noch meine Keyboard-Eingabe verhunzt.
Schade, das wäre die Lösung gewesen.

Gruß

Klaus

Re: Umlaute im DOS-Fenster

am 20.05.2005 11:36:58 von Martin Mohr

K. Wittrock schrieb:
> "Martin Mohr" schrieb im Newsbeitrag
>>Man kann die Konsole (zumindest unter W2k) auch mit chcp 1252 auf eben
>>jene Codepage umschalten. Die ist so ähnlich wie 8859-1.
>
>
> Ich hab das eben mal ausprobiert. Bei mir (Win NT) ändert sich dadurch
> nichts. Im Gegenteil: jetzt wird auch noch meine Keyboard-Eingabe verhunzt.
> Schade, das wäre die Lösung gewesen.

Hast du auch die Schrift umgestellt?

Re: Umlaute im DOS-Fenster

am 20.05.2005 19:51:48 von KWittrock

"Martin Mohr" schrieb im Newsbeitrag
news:d6kbci$i0e$2@wsc10.lrz-muenchen.de...
> K. Wittrock schrieb:
> > "Martin Mohr" schrieb im Newsbeitrag
> >>Man kann die Konsole (zumindest unter W2k) auch mit chcp 1252 auf eben
> >>jene Codepage umschalten. Die ist so ähnlich wie 8859-1.
> >
> >
> > Ich hab das eben mal ausprobiert. Bei mir (Win NT) ändert sich dadurch
> > nichts. Im Gegenteil: jetzt wird auch noch meine Keyboard-Eingabe
verhunzt.
> > Schade, das wäre die Lösung gewesen.
>
> Hast du auch die Schrift umgestellt?

Das war's. Ein Glück, dass du noch mal nachgehakt hast. Vielen Dank.

Klaus