Pregunta

he preguntado aquí Pero estoy bastante seguro de que no recibiré una respuesta.

  • Copiar - Pegue este código de Python:
  • ejecutalo
  • En un shell clásico UTF8 funciona correctamente y muestra "coordonnées", pero en mi menta terminal en casa muestra "coordonnm-cm-) es". ¿Alguna idea de cómo podría hacer que funcione o dónde debería verse (Mintty no tiene opciones de codificación de personajes)?

código:

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

Actualizar

Error: yo pensamiento Lo encontré: está escrito en todas partes para comenzar con ese código:

locale.setlocale(locale.LC_ALL, '')

Así que lo intenté con eso y funcionó:

locale.setlocale(locale.LC_ALL, 'fr_FR')

=> forzarlo al idioma francés

... Funcionó pero solo por los acentos. Si intento imprimir caracteres de dibujo de la línea:

stdscr.addstr(20,20, "─ │ ┌ ┘ ┐ └ ├ ┤ ┬ ┴ ┼ ═ ║ ╔ ╝ ╗ ╚ ╠ ╣ ╦ ╩ ╬")

me da:

M-b~T~@ M-b~T~B M-b~T~L M-b~T~X M-...

Lo que es la cabeza de la cabeza es que Vim muestra adecuadamente Esos caracteres. Entonces parece que viene ... de Python? Desde mi Windows/Cygwin/Mintty que funciona:

env | grep -i lang
LANG=C.UTF-8

Si obliga a codificar en casa en mis Windows/Cygwin/Mintty que no trabajar:

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

Esto no funciona.

¿Alguna idea de dónde podría mirar? Python parece anular correctamente la configuración de la configuración regional ... la consola está configurada correctamente y las fuentes pueden mostrar caracteres de dibujo de línea, porque los veo con VIM. Entonces, pensar más en ello, puede ser un problema de Python o un problema de maldiciones ...

¿Fue útil?

Solución 2

Está resuelto. Esto es lo que hice: reinstalé a Cygwin y luego reempaqué mi programa de Python en el trabajo, una re-descargarlo y luego reinstalé Minnty 0.9.5.1 (Minty-0.9.5-cygwin17.zip) y funciona ahora. Extraño.

Otros consejos

Sus lugares prefieren la codificación y la codificación de su TTY no tiene que ser lo mismo.

Verifique qué es sys.stdin.Encoding y sys.stdout.Encoding e intente usarlo.

Wild Guess es que la codificación predeterminada para MintTy es UTF8, pero la codificación preferida de sus locales es (desde que son Windows) CP1252.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top