cygwin은 문자 대신 직사각형을 표시합니다

cygwin은 문자 대신 직사각형을 표시합니다

Cygwin에 몇 가지 문제가 있습니다.

cygwin에서 make 유틸리티를 사용하면 텍스트 대신 직사각형이 인쇄됩니다. 또한 텍스트가 영어가 아닌 경우(예: 폴란드어 또는 러시아어) 문자 대신 직사각형이 표시됩니다. 하지만 기호를 인쇄하면 표시됩니다. 저는 mintty와 XTerm을 사용하는데, mintty가 더 좋습니다.

localeXterm의 출력:

$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_ALL=

하지만 문제는 내 Windows XP가 영어로 되어 있지만 미국에 있지 않고 러시아어 시간과 날짜 설정을 가지고 있다는 것입니다. 그게 문제일까요?

다른 언어로 된 텍스트를 제대로 보고 싶은데 방법이 없을까요?

mintty와 xterm도 약간 다르게 동작합니다. 나는 폴란드어로 된 텍스트 파일을 가지고 있습니다. catmintty에서는 텍스트에 직사각형이 제공되지 않지만 catxterm에서는 일부 문자가 포함된 직사각형이 제공됩니다.

mintty에서 make의 출력은 다음과 같습니다.

$ make
make: ▒▒▒▒ `default' ▒▒ ▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒.

이와 같이:

$ make
make: �� `default' � ���� ����� ���.

xterm에서.

일부 언어에 대해 문제를 해결하는 방법을 찾았습니다.https://stackoverflow.com/questions/13094248/how-do-i-get-accented-letters-to-actually-work-on-bash 거기에 적힌 대로 mintty 옵션을 설정하고 ISO-8859-2 문자 세트를 지정하면 폴란드어 텍스트가 잘 보입니다. 이해가 안 돼요. 텍스트를 utf-8 형식으로 저장하는데, 텍스트가 ANSI 형식인 것처럼 문자 세트를 설정해야 하는 이유는 무엇입니까?

문자 세트를 CP1251로 설정하면 make 결과만 볼 수 있습니다(러시아어로 되어 있는데 이유는 모르겠습니다).

답변1

참고: 나는 OP에게 그의 질문을 출력으로 업데이트하도록 요청했습니다.locale

로케일 문제가 있는 것 같습니다. 를 사용하여 현재 로케일을 확인할 수 있습니다 locale. 터미널이 인식하지 못하는 형식으로 출력되도록 LC_*하는 설정이 있을 가능성이 높습니다 . makeUTF8 문자 세트를 선택한 다음 UTF8 문자열을 구문 분석하거나 지원하도록 설정되지 않은 터미널이 있는 경우 이 내용을 볼 수 있습니다. 마찬가지로, 로케일이 utf-8이 아니고 터미널이 utf-8을 표시하도록 설정된 경우 비슷한 문제가 나타납니다. Minitty는 다음을 지원합니다.

$ perl -le 'binmode(STDOUT, ":utf8"); print "\x{0e44}\x{0e45}\x{0e46}";'
ไๅๆ

LC_ALL=C make또는 을 시도하여 export LC_ALL=C && make블록 출력이 사라지는지 확인하십시오.

utf8과 ANSI의 차이점에 대한 질문에 답하기 위해 utf8에는 더 큰 문자 집합이 있습니다. 이 문제를 해결하기 위해 utf8은 2비트를 사용하여 확장 문자 시퀀스를 설명하는데, ISO-8859-2와 같은 문자 집합은 1비트만 사용합니다. 하지만, 이런 트릭이 없다면자재 명세서파일로 저장하면(항상 지원되는 것은 아님) 사용하는 프로그램은 차이점을 알지 못하므로 locale이러한 문자열을 해석하는 방법에 대한 설정에 의존합니다. 이러한 문제를 복잡하게 만드는 것은 모든 애플리케이션이 그렇지는 않다는 것입니다.지원하다utf8. 인코딩, 유니코드 및 utf8 관련 사항에 대한 자세한 내용은 다음을 참조하세요.위키피디아. 러시아어 텍스트를 유니코드로 인코딩해야 하는 경우 다음에서 유니코드 시퀀스를 찾을 수 있습니다.위키피디아반품.

Makefile에서 확장 문자를 사용하는 경우 해당 문자가 실행하려는 인코딩과 일치하는지 확인해야 합니다.

답변2

mintty가 설정하는 글꼴과 로케일은 무엇입니까? 민트 창의 왼쪽 상단을 클릭하고 "옵션..."을 선택한 다음 "텍스트"를 클릭하면 설정을 찾을 수 있습니다.

내 글꼴 설정은 Consolas, 크기 11입니다. 로캘: en_US, 문자 집합: UTF-8.

먼저 시도해 본 다음 로케일을 러시아어로 설정해 보세요.

관련 정보