Wie unterdrücke ich UTF-8-Warnungen in Perl?

8

Aus verschiedenen Gründen bekomme ich die Fehlermeldungen Malformed UTF-8 character und Wide character in print von einem älteren Skript.

Ich möchte diese beiden Warnungen unterdrücken / deaktivieren, damit sie nicht in STDERR geschrieben werden.

Wie mache ich das?

    
knorv 02.06.2011, 22:24
quelle

4 Antworten

6
%Vor%

Aber es ist am besten herauszufinden, warum Sie die Warnung erhalten und das zugrunde liegende Problem beheben. Diese beiden Warnungen weisen darauf hin, dass in Ihrem Skript etwas schief läuft. Das Unterdrücken der Warnungen wird den Fehler nicht beheben.

    
cjm 02.06.2011, 22:38
quelle
12

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.

    
Schwern 02.06.2011 22:56
quelle
5

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.

%Vor%

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.

    
Lumi 02.06.2011 22:50
quelle
1

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%     
Andrew Murphy 03.11.2013 16:21
quelle

Tags und Links