curses border 및 python3과 함께 utf-8 인코딩 사용

필라 델 필라

python3 curses 프로그램에서 사용할 수 없습니다 . 이것은 내 코드의 일부입니다.

    import curses
    import locale

    locale.setlocale(locale.LC_ALL)
    locale.getpreferredencoding()
    stdscr = curses.initscr()
    caracter = str('█')
    stdscr.border(
            caracter, caracter, caracter, caracter, 
            caracter, caracter, caracter, caracter)

이 오류가 발생합니다.

OverflowError : 바이트가 chtype에 맞지 않습니다.

그러나 addstr다음과 같은 utf-8 코드를 작성 하기 위해 함수를 사용할 수 있습니다.

    stdscr.addstr(0, 0, "█")

당신의 도움을 주셔서 감사합니다.

Serge Ballesta

문제는 Python curses패키지가 ncurses C 라이브러리의 래퍼 일 뿐이라는 것입니다. 그리고 ncurses ( https://linux.die.net/man/3/ncurses )에서 문자는 chtype (문자 및 속성 데이터)으로 표시됩니다. 여기서 문자는 char일반적인 시스템에서 한 바이트 인 C 유형입니다. .

기본 border함수는 테두리의 각 문자가 단일 바이트 일 것으로 예상하는 반면, 사용하려는 'FULL BLOCK'은 유니 코드 문자 U + 2588 또는 UTF-8 바이트 문자열 b'\xe2\x96\x88'입니다. 이것이 오류 메시지의 이유입니다. 3 바이트 시퀀스를 단일 바이트 변수에 저장하려고합니다.

addstr함수는 문자열을 예상하고 3 바이트 시퀀스를 받아들이 기 때문에 잘 작동합니다 . 그러나 addch하나의 문자열을 기대하는 것은 깨질 것 입니다.

달리 말하면 curses 모듈은 문자열이 필요한 경우를 제외하고는 멀티 바이트 UTF-8 시퀀스를 허용하지 않습니다.

가능한 해결 방법 :

  • 기본 ncurses 라이브러리와 cursesPython 모듈 을 사용하는 데 권장되는 방법 은 요구 사항과 일치하는 단일 바이트 인코딩을 찾는 것입니다. Latin1 (ISO-8859-1)은 ncurses의 기본값이기도하지만 다른 인코딩이 사용자의 요구를 더 잘 충족 할 수 있습니다.
  • ncursesw 주변의 Python 래퍼를 찾거나 작성합니다. 이것은 와이드 (16 비트) 문자를 사용하는 ncurses의 변형입니다. 그것은 0x2588문자 값으로 기꺼이 받아 들일 것입니다 . 또는 더 일반적으로 유니 코드의 기본 다국어 평면 인 16 비트 전용 코드 포인트를 가진 모든 문자를 받아들입니다. 불행히도 나는 아무것도 모른다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

utf-8로 Python 디코딩 및 인코딩

분류에서Dev

ő 및 ű 문자를 사용하는 Perl DBI, MySQL의 UTF8 문자 인코딩

분류에서Dev

Python3을 사용하여 UTF-8 파일의 인코딩 오류 처리

분류에서Dev

압축 및 utf8 인코딩

분류에서Dev

UTF-8 및 latin1 인코딩 및 디코딩

분류에서Dev

Spark Python지도 함수 : UTF-8 인코딩 오류

분류에서Dev

C #의 UTF-8 인코딩 및 디코딩

분류에서Dev

MSVC UTF8 문자열 인코딩이 잘못된 코드 포인트를 사용함

분류에서Dev

std :: string 및 UTF-8 인코딩 된 유니 코드

분류에서Dev

14.04.2 LTS에서 Java 7 및 Java 8과 함께 대안 사용

분류에서Dev

Spring Boot 1.1.1을 사용한 UTF-8 인코딩

분류에서Dev

UTF-8 인코딩으로 싱크 사용

분류에서Dev

동일한 기호를 사용하여 Windows-1252를 UTF-8로 인코딩하는 Java 함수

분류에서Dev

Python3과 함께 SQLAlchemy에서 BINARY를 사용하면 TypeError : '인코딩없는 문자열 인수'가 발생하는 이유

분류에서Dev

Python curses를 사용하여 화면의 마지막 위치에 UTF8 문자를 씁니다.

분류에서Dev

파이썬 및 json UTF-8 인코딩

분류에서Dev

utf-8 및 json_encode의 PHP 인코딩

분류에서Dev

utf-8 인코딩 및 그리스 문자

분류에서Dev

HttpServletRequest UTF-8 인코딩

분류에서Dev

HttpResponse UTF-8 인코딩

분류에서Dev

SUDS 및 Python과 함께 QueryXML 사용

분류에서Dev

AWS Python Lambda 함수-UTF-8로 인코딩 된 CSV를 S3에 작성

분류에서Dev

Python 3-utf-8 인코딩 csv를 pandas로 읽기

분류에서Dev

python3 str을 utf8로 디코딩

분류에서Dev

HttpWebRequest StreamReader가 utf-8이 지원되지 않는 인코딩 이름 오류와 함께 실패합니다.

분류에서Dev

Linux에서 Python 2.7 및 Python 3과 함께 Spyder 사용

분류에서Dev

XML ISO-8859-1과 함께 ANSI 인코딩을 사용해야합니까?

분류에서Dev

Symfony2 크롤러-XPATH와 함께 UTF-8 사용

분류에서Dev

R knitr : R 및 Python 코드와 함께 spin () 사용

Related 관련 기사

  1. 1

    utf-8로 Python 디코딩 및 인코딩

  2. 2

    ő 및 ű 문자를 사용하는 Perl DBI, MySQL의 UTF8 문자 인코딩

  3. 3

    Python3을 사용하여 UTF-8 파일의 인코딩 오류 처리

  4. 4

    압축 및 utf8 인코딩

  5. 5

    UTF-8 및 latin1 인코딩 및 디코딩

  6. 6

    Spark Python지도 함수 : UTF-8 인코딩 오류

  7. 7

    C #의 UTF-8 인코딩 및 디코딩

  8. 8

    MSVC UTF8 문자열 인코딩이 잘못된 코드 포인트를 사용함

  9. 9

    std :: string 및 UTF-8 인코딩 된 유니 코드

  10. 10

    14.04.2 LTS에서 Java 7 및 Java 8과 함께 대안 사용

  11. 11

    Spring Boot 1.1.1을 사용한 UTF-8 인코딩

  12. 12

    UTF-8 인코딩으로 싱크 사용

  13. 13

    동일한 기호를 사용하여 Windows-1252를 UTF-8로 인코딩하는 Java 함수

  14. 14

    Python3과 함께 SQLAlchemy에서 BINARY를 사용하면 TypeError : '인코딩없는 문자열 인수'가 발생하는 이유

  15. 15

    Python curses를 사용하여 화면의 마지막 위치에 UTF8 문자를 씁니다.

  16. 16

    파이썬 및 json UTF-8 인코딩

  17. 17

    utf-8 및 json_encode의 PHP 인코딩

  18. 18

    utf-8 인코딩 및 그리스 문자

  19. 19

    HttpServletRequest UTF-8 인코딩

  20. 20

    HttpResponse UTF-8 인코딩

  21. 21

    SUDS 및 Python과 함께 QueryXML 사용

  22. 22

    AWS Python Lambda 함수-UTF-8로 인코딩 된 CSV를 S3에 작성

  23. 23

    Python 3-utf-8 인코딩 csv를 pandas로 읽기

  24. 24

    python3 str을 utf8로 디코딩

  25. 25

    HttpWebRequest StreamReader가 utf-8이 지원되지 않는 인코딩 이름 오류와 함께 실패합니다.

  26. 26

    Linux에서 Python 2.7 및 Python 3과 함께 Spyder 사용

  27. 27

    XML ISO-8859-1과 함께 ANSI 인코딩을 사용해야합니까?

  28. 28

    Symfony2 크롤러-XPATH와 함께 UTF-8 사용

  29. 29

    R knitr : R 및 Python 코드와 함께 spin () 사용

뜨겁다태그

보관