1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
use Modern::Perl '2015'; my $encoding = $^O eq 'MSWin32' ? 'cp1252' : 'utf8'; say "Encoding: $encoding <"; binmode(STDOUT, ":encoding($encoding)" ); binmode(STDERR, ":encoding($encoding)" ); binmode(STDIN, ":encoding($encoding)" ); # each open() automatically uses :encoding($encoding) use open ':encoding($encoding)'; my $res_file = "Erg.txt"; open(my $fh, ">:encoding($encoding)", $res_file) or die "Could not open file '$res_file'"; say $fh "Umlaute: äöüßÄÖÜ"; say $fh "Euro €"; say "Umlaute: äöüßÄÖÜ"; say "Euro €"; close $fh;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
use Modern::Perl '2015'; use Encode qw( encode decode ); #use utf8; my $encoding = $^O eq 'MSWin32' ? 'cp1252' : 'utf8'; #$encoding = 'Windows-1252'; #$encoding = 'cp1252'; #$encoding = 'utf8'; say "Encoding: $encoding <"; binmode(STDOUT, ":encoding($encoding)" ); binmode(STDERR, ":encoding($encoding)" ); binmode(STDIN, ":encoding($encoding)" ); # each open() automatically uses :encoding($encoding) use open ':encoding($encoding)'; my $res_file = "erg_1252.txt"; open(my $fh, ">:encoding($encoding)", $res_file) or die "Could not open file '$res_file'"; my $eur = decode("$encoding", "€"); my $uml = decode("$encoding", "äöüßÄÖÜ"); say $fh "Umlaute: äöüßÄÖÜ"; say $fh "Euro: €"; say $fh "decodiert"; say $fh "Uml: $uml"; say $fh "Eur: $eur"; say "\nNicht decodiert"; say "Umlaute: äöüßÄÖÜ"; say "Euro: €"; say "\ndecodiert"; say "Uml: $uml"; say "Eur: $eur"; close $fh;
1 2 3 4 5 6 7 8 9 10
#!/usr/bin/perl use strict; use warnings; use Encode qw(decode encode_utf8); my $testtext = 'öäüÖÄÜ߀'; my $data = encode_utf8 decode "windows-1252", $testtext; open my $fh, '>', "test.txt" or die $!; print $fh $data; close($fh);
1 2 3 4 5 6 7 8 9 10 11
#!/usr/bin/perl use strict; use warnings; use Encode qw(decode encode_utf8); my $testtext = 'öäüÖÄÜ߀'; my $data = encode_utf8 decode "windows-1252", $testtext; open my $fh, '>', "test.txt" or die $!; print $fh $data; close($fh); print "\nDecode: > $data <\n";
2015-07-13T10:58:21 biancaWas hast denn immer mit deinem cp850 und cp1252? Wo kommt das her, was willst du damit?
2015-07-13T10:58:21 biancaSind dir die zweite und dritte Zeile nicht aufgefallen? Da gab es noch:Und deine letzte Konsolenausgabe sah doch gut aus. Was gefällt dir daran nicht?
Quotegratis obendrauf, um es mal so zu sagen.߀ <
<
2015-07-13T10:58:21 biancaUnd wieso lädtst du die Bilder nicht hier hoch?
2015-07-13T10:58:21 biancaSonst sag bitte nochmal ganz genau, was am Ende in der Ausgabe raus kommen soll. Ich hab es bisher so verstanden, dass UTF-8 rauskommen soll und das tut mein Script.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
#!/usr/bin/perl use Modern::Perl '2015'; use Encode qw(decode encode); my $encoding = $^O eq 'MSWin32' ? 'cp1252' : 'utf8'; binmode(STDOUT, ":encoding($encoding)" ); binmode(STDERR, ":encoding($encoding)" ); binmode(STDIN, ":encoding($encoding)" ); my $testtext = 'öäüÖÄÜ߀'; my $data2 = decode "$encoding", $testtext; open my $fh, '>', "test.txt" or die $!; say $fh $data2; close($fh); say "\nData2: > $data2 <\n";
2015-07-13T11:24:08 roli2015-07-13T10:58:21 biancaWas hast denn immer mit deinem cp850 und cp1252? Wo kommt das her, was willst du damit?
Diese Codepages sind nun mal die Standardeinstellungen für das Encoding der Dos-Box an den Windows Rechnern mit denen ich zu tun habe. Was ich damit will, ganz einfach, ich möchte es den Nutzern der Scripte so einfach wie möglich machen. Wenn man
2015-07-14T15:37:33 biancaJa, und beim Modul Encode heißt das windows-1252 und nicht "cp1252" soweit ich weiß.
QuoteAll cp* are also available as ibm-*, ms-*, and windows-* .
1 2 3 4 5 6 7 8 9 10 11
my $str = "Ä Ö Ü ß €\n"; system( "chcp 1252" ); print $str; my $res_file = "erg_1252.txt"; open( my $fh, ">", $res_file ) or die "Could not open file '$res_file'"; print $fh $str; close $fh;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
use utf8; # Skript in UTF-8 kodiert use Encode qw( encode ); my $str = "Ä Ö Ü ß €\n"; if ( $^O eq "MSWin32" ) { $str = encode( "cp1252", $str ); system( "chcp 1252" ); } print $str; my $res_file = "erg_1252.txt"; open( my $fh, ">", $res_file ) or die "Could not open file '$res_file'"; print $fh $str; close $fh;