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
Wenn Sie Windows verwenden, gibt es Win32::Codepage.
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
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
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
- 1. Wie kann ich die Perl-Konsolenausgabe in einer GUI anzeigen?
- 2. Codierung für externe Benutzereingabe in Perl
- 3. Autodetect Proxy - JavaFX - webview
- 4. Perl - Codierung von und zu base64
- 5. Browsersprache: Autodetect vs Benutzer auswählen?
- 6. C++ - Konsolenausgabe in Netbeans
- 7. Konsolenausgabe in HTML-Datei
- 8. Weird Konsolenausgabe in TortoiseHG
- 9. Farbige Konsolenausgabe
- 10. Probleme mit XML-Codierung in Perl XML Lib
- 11. Wie kann ich die Codierung einer Zeichenfolge in Perl erraten?
- 12. Codierung eines awk-Befehls in einem Perl-Skript
- 13. Umleiten der Konsolenausgabe an eine Textdatei
- 14. `autodetect ': Kein bekanntes ORM wurde erkannt
- 15. Autodetect Endpunktadresse zu verbinden - WCF C#
- 16. Anzeigen der gelöschten Konsolenausgabe
- 17. Konsolenausgabe für Listenansicht
- 18. Jenkins: Konsolenausgabe Zeichen
- 19. Djangos Server-Konsolenausgabe verstehen
- 20. Wird die Konsolenausgabe blockiert?
- 21. Problem mit C++ - Konsolenausgabe
- 22. Codierung von Newline, Anführungszeichen und Sonderzeichen mit Perl Mechanize
- 23. Wie AutoDetect/IE-Proxy-Einstellungen in .net verwenden HttpWebRequest
- 24. javascript each - autodetect Name von val in (Schlüssel, val)
- 25. Wie unterdrückt man die Konsolenausgabe in Python?
- 26. Robot Framework: Wie Konsolenausgabe in Datei umleiten
- 27. C++ Code Ergebnisse in möglichen Konsolenausgabe Fehler
- 28. Konsolenausgabe stoppt auf scanf() Methode in C++
- 29. Anzeigen der NUnit-Konsolenausgabe in CruiseControl.NET
- 30. Ändern des Farbschemas der Konsolenausgabe in mRemoteNG
Das Skript wird auf jedem Betriebssystem – n0rd
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. –
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