mintty terminal、python、curses和utf8:显示不正确

2024-10-01 17:26:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经问了here,但我很肯定我不会得到答复的。在

  • 复制-粘贴以下python代码:
  • 执行它
  • 在一个经典的utf8外壳中,它可以正常工作并显示“Coordonnées”,但在我家的mintty终端中,它显示的是“coordonnmcm-)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()

更新

错误:我觉得找到了: 到处都是这样写的:

^{pr2}$

所以我试了一下,效果很好:

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的问题,也可能是诅咒的问题。。。在


Tags: 代码importifesmaincodeall字符
2条回答

解决了。我是这样做的:我重新安装了cygwin,然后在工作时重新打包了python程序,重新下载了它,然后重新安装了mintty 0.9.5.1(mintty-0.9.5-cygwin17.zip),现在它可以工作了。奇怪。在

您的区域设置首选编码和tty的编码不必相同。在

检查什么系统标准编码以及系统标准输出编码并试着用它。在

人们猜测mintty的默认编码是UTF8,但是您所在地区的首选编码是(因为它是windows)cp1252。在

相关问题 更多 >

    热门问题