のWindows 7のGit Bashの/ WinPTY下のpython3で作業をUnicode文字を矢印、制限付きユーザーアカウントが実行されている Gitのgit version 2.14.1.windows.1
両方のREPL /キー機能と
MINGW/MSYS MINGW64_NT-6.1 REDACTED 2.8.2(0.313/5/3) 2017-07-12 15:35 x86_64 Msys
PythonのPython 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:44:40) [MSC v.1600 64 bit (AMD64)] on win32
ロケールが設定されています:
$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_ALL=
Python IOエンコード変数
$ env | grep "PYTHON"
PYTHONIOENCODING=utf-8
を設定されている今、「テスト」のため:
$ /c/Python34/python.exe -i
Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:44:40) [MSC v.1600 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.stdout.encoding
'utf-8'
>>> print('\u2660')
♠
>>>
Unicodeは動作しますが、矢印キーの機能は、REPLで失われました。代わりにWinPTYを使用して実行してください。
$ winpty /c/Python34/python.exe -i
Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:44:40) [MSC v.1600 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.stdout.encoding
'utf-8'
>>> print('\u2660')
ΓÖá
>>>
これでREPLの履歴をナビゲートすることができますが、ユニコードはうんざりです。
だから、私はREPLまたは適切なユニコードエンコードの矢印キーを使用することができますが、両方を使用することはできません。誰か他の人がこの問題を抱えているのですか?
注:この環境に制限されています。私は簡単にアプリケーションをインストール/更新/変更することはできません。
'WinPTY'の場合、コンソールは' cp437'(デフォルトのUS OEM Windowsエンコーディング)を使用していますが、Pythonは 'PYTHONIOENCODING'を介してUTF-8を出力するように強制しています。 Python 3.6にアップデートできますか?このバージョンでは、Windows UnicodeコンソールAPIを使用してUnicodeを出力するため、問題は発生しません。 –
minttyは、bashが無用に継承している隠しコンソールを作成し、代わりに標準ハンドルを名前付きパイプに設定します。これはPythonが継承するので、標準でPythonのデフォルト動作を回避するために '-i'と' PYTHONIOENCODING' I/Oはパイプ接続されています。もちろん、Pythonは入力履歴と入力編集のためのコンソールの調理読み込みをもはや持っていません。ですから、winptyとwinpty-agentを使って解決します。これはPython用の別の隠しコンソールを作成し、スクリーンバッファの疑わしいポーリングに依存します。あまりにも複雑です。私は通常のコンソールアプリケーションとしてMSYS bashを実行することに固執します。 – eryksun
@マークトローネン:ありがとう!私は、私の現在の環境に最初にマッチした別の無関係のマシンでテストを行い、自分の環境で利用可能だったPython 3.6.2をインストールしました。 – Xanothos