私はここで尋ねましたが、私は答えを得ることができないと確信しています。
- コピー-このPythonコードを貼り付けます:
- 実行する
- 従来のutf8シェルでは正しく動作し、「Coordonnées」と表示されますが、自宅の私のミンティ端末では「CoordonnM-CM-)es」と表示されます。どのようにそれを機能させることができるか、またはどこを見るべきか(minttyには文字エンコードオプションがありません)?
コード:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os, sys, time, random, copy, pprint
import termios, tty, fcntl
import thread, curses
import locale
def curses_main(stdscr, code):
curses.curs_set(0)
stdscr.addstr(2, 0, "Coordonnées")
stdscr.refresh()
# (1) = délai d'attente de 1/10 ème de seconde :
curses.halfdelay(1)
while True:
try:
c=stdscr.getch()
except:
c=-1
if 0<c<256:
if chr(c) in 'Qq':
break
def main():
locale.setlocale(locale.LC_ALL, '')
code = locale.getpreferredencoding()
curses.wrapper(curses_main, code)
if __name__ == '__main__':
main()
アップデート
エラー:私はそれを見つけたと思いました:それはそのコードで始まるようにどこにでも書かれています:
locale.setlocale(locale.LC_ALL, '')
だから私はそれを試してみました、そしてそれはうまくいきました:
locale.setlocale(locale.LC_ALL, 'fr_FR')
=>フランス語に強制する
...それは機能しましたが、アクセントのためだけでした。線画文字を印刷しようとすると:
stdscr.addstr(20,20, "─ │ ┌ ┘ ┐ └ ├ ┤ ┬ ┴ ┼ ═ ║ ╔ ╝ ╗ ╚ ╠ ╣ ╦ ╩ ╬")
私に与える:
M-b~T~@ M-b~T~B M-b~T~L M-b~T~X M-...
ヘッドバンギングとは、vimがそれらの文字を適切に表示することです。だからそれは...Pythonから来ているようですか?動作する私のWindows/cygwin / minttyから:
env | grep -i lang
LANG=C.UTF-8
Windows / cygwin / minttyで自宅でエンコードを強制すると、機能しなくなります。
locale.setlocale(locale.LC_ALL, 'C.UTF-8')
これは機能しません。
私がどこを見ることができるか考えていますか?pythonはロケール設定を適切にオーバーライドしているようです...コンソールは適切に構成されており、フォントはvimで表示されるため、線画文字を表示できます。それで、それについてもっと考えると、それはpythonの問題かcursesの問題のどちらかかもしれません...