2011-01-24 3 views
3

질문 : here하지만 답변을 얻지 못할 것이라고 확신합니다. ES) 민트 티 터미널, 파이썬, 저주 및 utf8 : 잘못된 디스플레이

  • 가 제대로 및 표시 "Coordonnées"을 작동하지만, 집에서 내 mintty 터미널에 "이 CoordonnM-CM-를 표시하는 고전 UTF8 쉘에서 그것을
  • 을 실행 -

    • 사본이 파이썬 코드를 붙여 넣습니다 ". 어떤 생각을 어떻게 할 수 있는지, 어디에서보아야하는지 (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() 
    

    업데이트

    오류 : I 그것을 발견 생각 : 가 그 코드로 시작하는 모든 곳에서 쓰여 : 그래서 함께 노력

    locale.setlocale(locale.LC_ALL, '') 
    

    그것과 그것은 작동했다 :

    프랑스어

    -3210

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

    는 => 힘을 ... 는하지만 단지 악센트했다. 내가 인쇄 선 그리기 문자로하려고하면 :

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

    저를 제공합니다

    [email protected] M-b~T~B M-b~T~L M-b~T~X M-... 
    

    무엇 헤드 두드리는는 정력을 표시 제대로 그 문자입니다. 파이썬에서 온 것처럼 보인다. 내 Windows/Cygwin에서/mintty에서 작동한다 :

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

    내 Windows/Cygwin에서/mintty 작업을하지 않는 집에서 인코딩을 강제하는 경우 :

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

    이되지 않습니다 작업.

    어디에서 볼 수 있습니까? 파이썬은 제대로 로케일 설정을 덮어 씌우는 것처럼 보입니다 ... 콘솔이 제대로 구성되어 있고 글꼴에 선 그리기 문자가 표시 될 수 있습니다. 그것에 대해 더 생각하면 파이썬의 문제이거나 저주 문제 일 수 있습니다 ...

  • +0

    젠장! 파이썬 코드가 제대로 표시되지 않습니다. 여기에 표시하는 방법을 알고 있다면 코드가 표시된이 링크로 이동하여 여기에 붙여 넣기를 요청할 수 있습니까? (그리고 고마워요.) –

    +0

    Windows Python 또는 Cygwin Python? – ak2

    +0

    Cygwin => mintty via cammand line => 파이썬 스크립트 시작 –

    답변

    0

    해결되었습니다. 여기에 제가 한 일이 있습니다 : Cygwin을 다시 설치 한 후 직장에서 파이썬 프로그램을 재 포장 한 다음 다시 다운로드하여 0.9.5.1 (mintty-0.9.5-cygwin17.zip)을 다시 설치하면 이제 작동합니다. 이상한.

    0

    로캘 선호 인코딩과 tty 인코딩이 동일 할 필요는 없습니다.

    sys.stdin.encoding 및 sys.stdout.encoding이 무엇인지 확인하고이를 사용하십시오.

    야생의 추측은 mintty의 기본 인코딩은 UTF8이지만 로캘 선호 인코딩은 (이후 Windows이기 때문에) cp1252라는 것입니다.

    +0

    오늘 밤해볼 게요.하지만 내 작업에서는 작동하지만 집에서는 아니기 때문에 이상합니다. 같은 커플인데 반해 cygwin/mintty (둘 다 Windows에서). 네가 옳은지 내가 알려줄거야. 고마워요! Btw, 어떻게 내 코드를 제대로 표시 했습니까? '코드'버튼을 클릭해도 작동하지 않았습니다. –

    +0

    아니요 : stdscr.addstr (4,4, sys.stdin.encoding) stdscr.addstr (5,4, sys.stdout.encoding) 결과 : UTF-8/UTF-8 –

    +0

    작동하지 않았습니다. 나는 그것이 내 자신의 답변을 올렸으므로 효과가 있다고 생각했으나 효과가 없었다. 내 대답을 참조하십시오. 여기에서 문제의 세부 정보를 입력하십시오. 아마 민트 콘솔 자체에서 온 것이 아닙니다 ... –