Bequemes Bash mit Git Bash und Cmder Als ich versuchte, mein Leben zu beginnen, war Python verstümmelt.
$ python -c "print('japanisch')"
譌 ・ 譛 ャ 隱 隱
chcp.com 65001
export PAGER = less
anFügen Sie also die folgenden zwei Zeilen zu .bashrc
hinzu.
.bashrc
chcp.com 65001
export PAGER=less
Das ist alles für die Schlussfolgerung, aber ich werde den Hintergrund dazu überlassen.
$ python -c "print('japanisch')"
譌 ・ 譛 ャ 隱 隱
Ich habe so viele Bestätigungsbefehle für die Zeichencodierung eingegeben, wie ich mir vorstellen konnte.
$ echo $LANG
ja_JP.UTF-8
$ echo $PYTHONIOENCODING
utf-8
$ python -c "import sys; print(sys.stdout.encoding)"
utf-8
$ python -c "import sys; print(sys.getdefaultencoding())"
utf-8
$ python -c "import locale; print(locale.getpreferredencoding(False))"
cp932
Es gibt fast UTF-8 zurück. Nur "locale.getpreferredencoding ()" antwortete wie cp932, aber laut Documentation ist dies:
Gibt zurück, wie Textdaten basierend auf Benutzereinstellungen codiert werden. Diese Funktion ist nur eine Vermutung **, da die Benutzereinstellungen zwischen verschiedenen Systemen unterschiedlich ausgedrückt werden und auf einigen Systemen möglicherweise nicht programmgesteuert verfügbar sind.
Es ist nicht so verdächtig.
Dabei fand ich die folgende Beschreibung in der Dokumentation von sys.stdout
:
Die Zeichenkodierung ist plattformabhängig. ** Wenn der Stream unter Windows interaktiv ist (wenn die isatty () -Methode True zurückgibt), lautet die Konsolencodepage **, andernfalls wird die ANSI-Codepage verwendet. Andere Plattformen verwenden die Gebietsschemacodierung (siehe locale.getpreferredencoding ()).
Codepage ...!
Ich habe gegoogelt, weil ich die Codepage nicht kannte. Es scheint mit dem Befehl chcp
eingestellt zu sein.
Selbst von Git Bash aus können Sie den Pfad mit dem Erweiterungsnamen "chcp.com" aufrufen, wenn sich der Pfad in "/ C / windows / system32" befindet.
$ chcp.com #Codepage-Bestätigung
Aktuelle Codepage: 932
$ chcp.com 65001 #Codepage-Einstellungen(UTF-8)
$ python -c "print('japanisch')"
japanisch
Es war in Ordnung und ich habe die verstümmelten Charaktere losgeworden.
Ich kann in Python keine Hilfe bekommen. Es wird als "Nicht genügend Speicher" angezeigt.
>>> import sys
>>> help(sys.argv)
Not enough memory.
Es scheint, dass Windows more.com
unter der Umgebung von chcp 65001
nicht gut funktioniert.
Wenn der Inhalt, den Sie anzeigen möchten, mehrere Seiten umfasst, wird "--Mehr (40%) -" oder etwas angezeigt, das Sie zur Eingabe eines Schlüssels auffordert. Eine solche Funktion wird als Pager bezeichnet.
Unter Linux spielt normalerweise der Befehl "less" diese Rolle. Ich möchte "less.exe" anstelle von "more.com" verwenden, das nicht mehr verfügbar ist!
Es scheint, dass Python es verwenden wird, wenn Sie es in der Umgebungsvariablen PAGER
angeben.
Ich konnte keine Erwähnung von Pagern in der Dokumentation finden. Ist es selbstverständlich oder ist es eine andere Funktion als Python?
$ export PAGER=less
$ python
>>> import sys
>>> help(sys.argv) #Ab hier wird unten auf dem Bildschirm weniger angezeigt, sodass der Python-Interpreter einmal ausgeblendet wird
Help on list object:
class list(object)
| list() -> new empty list
| list(iterable) -> new list initialized from iterable's items
|
| Methods defined here:
|
...
Herzlichen Glückwunsch Hilfe ist zurück.
Diesmal habe ich es in der Hilfeanzeige von Python bemerkt, aber andere Leute, die more.com
verwenden, werden wahrscheinlich auf dasselbe Problem stoßen.
Selbst in diesem Fall kann es etwas geben, das mit "export PAGER = less" gelöst werden kann.
Versuchen Sie erneut, locale.getpreferredencoding ()
mit aufgelöster Auflösung auszuführen.
$ python -c "import locale; print(locale.getpreferredencoding(False))"
cp932
Immerhin ist die Erfassung durch "getpreferredencoding" nicht gut genug.
Wenn "chcp 65001" gesetzt ist, wird das Ergebnis von "cmd /?" In Englisch angezeigt. Wenn Sie cmd /? Starten, wird Japanisch angezeigt.
Referenz: [Eingabeaufforderung / Umschaltmethode im englischen Modus / im japanischen Modus / chcp - Leben unter Windows](http://win.just4fun.biz/%E3%82%B3%E3%83%9E%E3%83%B3%] E3% 83% 89% E3% 83% 97% E3% 83% AD% E3% 83% B3% E3% 83% 97% E3% 83% 88 /% E8% 8B% B1% E8% AA% 9E% E3 % 83% A2% E3% 83% BC% E3% 83% 89% E3% 83% BB% E6% 97% A5% E6% 9C% AC% E8% AA% 9E% E3% 83% A2% E3% 83 % BC% E3% 83% 89% E3% 81% AE% E5% 88% 87% E3% 82% 8A% E6% 9B% BF% E3% 81% 88% E6% 96% B9% E6% B3% 95 % E3% 83% BBchcp.html)
Es scheint, dass die Umgebungsvariable GIT_PAGER
auch in git verwendet werden kann.
27.09.2016 Beschrieben über chcp 2016/10/09 Hinzugefügt über PAGER
Recommended Posts