мясной терминал, питон, проклятия и UTF8: Неправильный дисплей

StackOverflow https://stackoverflow.com/questions/4780591

  •  23-10-2019
  •  | 
  •  

Вопрос

Я спросил здесь Но я уверен, что не получу ответа.

  • Скопировать - вставьте этот код Python:
  • выполнить это
  • В классической оболочке UTF8 он работает должным образом и отображает «координат», но в моем мясном терминале дома он отображает «Координинг-CM-) es». Любая идея, как я мог бы заставить это работать, или где я должен посмотреть (у Минтти нет вариантов кодирования персонажа)?

код:

#!/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')

=> Написать его на французский язык

... это сработало, но только для акцентов. Если я попытаюсь напечатать линию рисования Chars:

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

Если я заставляю кодировать дома в моих окнах/цигвин/мятном не Работа:

locale.setlocale(locale.LC_ALL, 'C.UTF-8')

Это не работает.

Есть идеи, куда я мог бы посмотреть? Python, кажется, правильно переопределяет настройки локализации ... Консоль правильно настроена, а шрифты могут отображать чертежные карты линии, потому что я вижу их с VIM. Так что больше думать об этом, это может быть либо проблемой Python, либо проблемой проклятий ...

Это было полезно?

Решение 2

Это решено. Вот что я сделал: я переустановил Cygwin, затем перепаковал свою программу Python на работе, а затем повторно загрузил его, а затем повторно установил Minnty 0.9.5.1 (Mintty-0.9.5-cygwin17.zip), и это работает сейчас. Странный.

Другие советы

Ваши локалы предпочитают кодирование, и кодирование вашего TTY не должно быть таким же.

Проверьте, что такое sys.stdin.encoding и sys.stdout.encoding, и попробуйте использовать это.

Дикие предположения заключается в том, что кодирование по умолчанию для Mintty является UTF8, но ваши локалы предпочитают кодирование (так как это Windows) CP1252.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top