我问here,但我很确定我不会得到答案。
代码:
#!/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')
=&GT;强迫它使用法语
... 它有效,但只适用于口音。 如果我尝试打印线条图:
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的问题或诅咒的问题......
答案 0 :(得分:0)
您的语言环境首选编码,您的tty编码不必相同。
检查sys.stdin.encoding和sys.stdout.encoding是什么,并尝试使用它。
疯狂的猜测是,mintty的默认编码是UTF8,但你的locales首选编码是(因为它是windows)cp1252。
答案 1 :(得分:0)
它已经解决了。这就是我的所作所为:我重新安装了cygwin,然后在工作中重新打包我的python程序,重新下载然后重新安装了minnty 0.9.5.1(mintty-0.9.5-cygwin17.zip),它现在正常工作。奇怪。