2010-06-06 16 views
5

Ich habe ein Perl-Skript, das einige Informationen zur Konsole auf Russisch druckt. Das Skript wird auf mehreren Betriebssystemen ausgeführt, sodass die Konsolencodierung cp866, koi8-r, utf-8 oder andere sein kann. Gibt es eine portable Möglichkeit, Konsolencodierung zu erkennen, damit ich STDOUT entsprechend einrichten kann, damit der Text korrekt gedruckt wird?Autodetect Konsolenausgabe Codierung in Perl

Antwort

2

Wenn Sie Windows verwenden, gibt es Win32::Codepage.

+0

Das Skript wird auf jedem Betriebssystem – n0rd

+0

Auf einem Windows-Konsole ausgeführt werden, ist dies die beste Lösung, die ich kenne. Ich kenne keine Möglichkeit, die Ausgabecodierung auf Linux oder anderen Unix-ähnlichen Systemen zu erkennen. Normalerweise setze ich das Terminal auf UTF-8-Codierung und verwende das für Perl. Unter Windows ist es meines Wissens nicht möglich, die Codepage des Terminalfensters festzulegen. Was eine portable Lösung angeht, wäre das großartig, aber ich weiß nicht, ob sie existiert. –

+0

Unter Windows wird die Konsolencodierung mit 'chcp' programmiert, ich nehme an, dass es auch eine programmatische Lösung gibt. Wie auch immer, eine bestimmte Konsolencodierung zu erzwingen ist keine Lösung. – n0rd

1
+0

Funktioniert nicht unter Windows. Wenigstens habe ich es nicht geschafft. Ich glaube, dass es auf Umgebungsvariablen angewiesen ist, um Konsolencodierung zu erkennen, die normalerweise nicht unter Windows eingestellt ist. – n0rd

1
+0

Das ist interessant: 'Term :: Encoding :: get_encoding()' gibt 'utf-8' auf meinem Windows Server 2012 mit cygwin perl zurück. 'chcp' zeigt an, dass sich die Konsole tatsächlich in' cp-437' befindet, Perl-Skripte sind jedoch in der Lage, nicht-lateinische Zeichen zu drucken. Ich bin jetzt verwirrt. – n0rd

+0

Finden Sie heraus, warum die Ausgabe des 'chcp'-Befehls und der [GetConsoleOutputCP] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms683169 (v = vs.85) .aspx) API Ruf nicht einverstanden. Versuchen Sie es mit einem nativen Perl anstelle von Cygwin. – daxim

Verwandte Themen