Thread Best practice UTF-8 Output
(35 answers)
Opened by bianca at 2013-11-29 07:03
Habe mal alle 4 Vorschläge getestet.
Testumgebung: Win7 32 Bit, Perl 5.16.3, u.a. Script mit Notepad ++ in der Kodierung ANSI erstellt und gespeichert. Ergebnis: Tests 1,2 und 4: Datei hat 89 Byte, überall fehlt das Euro-Zeichen, der Lister von Totalcommander zeigt mir für alle Dateien eine UTF-8 Codierung. An der Stelle des Euro-Zeichens zeigt der Hex-Editor im Totalcommander Lister Code 80 an. Test 3: Datei hat 80 Byte, Euro-Zeichen ist da aber als Zeichensatz wird im Lister ANSI angezeigt. Code: Code (perl): (dl
)
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 40 41 42 43 44 45 46 47 #!/usr/bin/perl use strict; use warnings; use diagnostics; use Fcntl qw(:DEFAULT); my $testtext = <<__TEST__ Hier ist ein Text mit allen Umlauten: öäüß und groß: ÖÄÜ Das Euro-Zeichen: € __TEST__ ; my $lauf = 0; { # Test 1 biancas Versuch $lauf ++; sysopen(my $fh,"test$lauf.txt",O_RDWR|O_CREAT,0666) or die $!; binmode($fh,':utf8') or die $!; undef local $/; print $fh $testtext; close($fh); } { # Test 2 topeg https://www.perl-community.de/bat/poard/message/172298 $lauf ++; open(my $fh, '>:encoding(UTF-8)',"test$lauf.txt") or die $!; undef local $/; print $fh $testtext; close($fh); } { # Test 3 rosti https://www.perl-community.de/bat/poard/message/172353 $lauf ++; use IO::File; my $fh = new IO::File "> test$lauf.txt"; print $fh $testtext; $fh->close; } { # Test 4 GwenDragon https://www.perl-community.de/bat/poard/message/172366 $lauf ++; open my $fh, '>', "test$lauf.txt"; binmode $fh, ':encoding(UTF-8)'; print $fh $testtext; close($fh); } Fragen: Wie bekomme ich den Text inklusive Euro-Zeichen in UTF-8 gespeichert? Oder zeigt der Lister von Totalcommander mir das Ergebnis falsch an und das Euro-Zeichen ist tatsächlich da? 10 print "Hallo"
20 goto 10 |