Perl - UTF8



  • Hi,

    Ich verwende Ubuntu und programmiere in Perl. Die Perl-Datei ist als UTF-8 abgespeichert und im ganzen System ist "de_DE.UTF-8" eingestellt. Wenn ich nun in der Perl-Datei "use utf8;" schreibe, so werden die Umlaute nicht ausgegeben, wenn ich jedoch "use utf8;" weglassen, werden die Umlaute ausgegeben.

    Kann mir einer diesen komischen Effekt bitte erklären?



  • Ich nimms zurück. Es geht leider nicht. Viele Unicodezeichen werden nicht ausgegeben. Kann mir da einer bitte helfen?



  • use utf8;
    binmode(STDOUT, ":utf8");
    

    Mit dem "use utf8" teilst du Perl mit, dass dein Skript in UTF-8 vorliegt. Du musst Perl aber auch mitteilen, dass es für die Ausgabe auf Stdout UTF-8 verwenden soll. Dafür gibt es zig verschiedene Möglichkeiten (TIMTOWDI halt...), oben siehst du eine.

    Warum das nicht die Defaulteinstellung ist, kann ich dir leider auch nicht sagen. Es gibt aber auch eine Environment-Variable (PERL_UNICODE?, musste mal suchen), die du setzen kannst, damit Perl stdin/stdout/stderr stdmäßig als UTF-8 behandelt.



  • Die Zeile die du mir vorgeschlagen hast hab ich vorher schon probiert, es werden zwar Umlaute ausgegeben aber sowas z. B. nicht:
    print "\x{c49f} \x{c59f} \x{c6b1}\n";

    Ich weiß nicht weiter..



  • Kennt der in der Konsole verwendete Zeichensatz diese Zeichen denn überhaupt?



  • Johnn schrieb:

    Die Zeile die du mir vorgeschlagen hast hab ich vorher schon probiert, es werden zwar Umlaute ausgegeben aber sowas z. B. nicht:
    print "\x{c49f} \x{c59f} \x{c6b1}\n";

    Ich weiß nicht weiter..

    Hmm, das funktioniert bei mir einwandfrei. Ansonsten ist deine Umgebung aber korrekt eingerichtet? Außerhalb von Perl funktioniert alles?

    Ansonsten probier es halt mal mit der PERL_UNICODE-Umgebungvariable. Der Wert S führt zum Behandeln von stdin/out/err als UTF-8, mit A wird auch @ARGV als UTF-8 interpretiert. Versuch mal:

    PERL_UNICODE=AS ./test.pl
    

    Was für eine Perlversion hast du denn?



  • Ich hab die Version 5.14.2. Eure Vorschläge haben leider nichts gebracht. UTF-8 ist installiert und auch gesetzt. Woran liegt das Problem?



  • So wies aussieht ist hier jeder verzweifelt und kann mir nicht helfen..



  • Welchen Terminalemulator nutzt du? Bei xterm kann man mit Ctrl + rechte Maustaste die Fonts auf UTF8 umstellen.



  • rifkin schrieb:

    Welchen Terminalemulator nutzt du? Bei xterm kann man mit Ctrl + rechte Maustaste die Fonts auf UTF8 umstellen.

    Gerade getestet und es geht nicht 😞 Versuche mal einen andere Terminalemulator.


Anmelden zum Antworten