Vermutlich arbeiten Sie in utf8. Sie müssen die utf8-Behandlung für jedes Dateihandle aktivieren.
%Vor% Sie können dies für alle Standard-Handles mit use open ":encoding(utf8)"
tun. Weitere Informationen finden Sie .
Schließlich können Sie alles, Ihren Code, Ihre Dateihandles und Ihre Argumente mit utf8 :: all
Beachten Sie, dass :utf8
die utf8-Behandlung aktiviert, aber :encoding(utf8)
prüft, ob die Daten gültig sind utf8, also ist es sicherer. Siehe perldoc -f binmode
für Details.
Hier sind zwei Beispiele, die Ihnen helfen sollen, die Fehler zu verstehen:
%Vor% Die Quelle ist in Latein-1, mein Terminal ist in UTF-8. Die Saite ist eigentlich "Käse". Das Pragma utf8
muss entweder entfernt oder die Quelle in UTF-8 gespeichert werden.
Die Quelle enthält kyrillische Zeichen, daher ist das Pragma utf8
in Ordnung. Um diese Zeichen jedoch auf dem Terminal zu drucken, muss STDOUT
ebenfalls auf UTF-8 gesetzt werden, was Sie durch Aufruf von binmode
erreichen können. Wenn Sie dies nicht tun, wird eine Warnung ausgelöst, da ein breites (Unicode über 0x255) Zeichen nicht durch einen schmalen (Byte) Ausgabekanal passt. Es sieht immer noch korrekt aus, weil Perl nur die Bytes so ausgeben wird, wie sie sind, was dann richtig aussieht.
Hatte das gleiche Problem mit der Debug-Ausgabe von log4perl mit Perl in der Windows Powershell Console
%Vor%Die Lösung war (in der Log4perl-Konfigurationsdatei)
%Vor%