Linux 커널에 의해 구현된 tty는 항상 UTF-8을 사용하여 데이터를 렌더링합니까?

Linux 커널에 의해 구현된 tty는 항상 UTF-8을 사용하여 데이터를 렌더링합니까?

그런 것 같습니다. 나는 읽었다IUTF8, 그러나 문서에는 줄 편집을 수행할 때 입력을 UTF-8로 처리할 수 있다고만 나와 있습니다.

하지만 출력은 어떻습니까? GUI 터미널을 사용하는 경우 일반적으로 인코딩을 변경하여 pty의 출력 버퍼에 바이트를 렌더링할 수 있지만 커널의 tty 구현은 어떻습니까?

Linux는 항상 UTF-8을 사용하여 tty 출력 버퍼의 바이트를 렌더링합니까?

답변1

"Linux" 자체는 이 작업을 수행하지 않습니다. 애플리케이션(터미널 에뮬레이터를 포함하되 이에 국한되지 않음)은 이 작업을 수행할 수도 있고 수행하지 않을 수도 있습니다.

Linux 콘솔 터미널은 UTF-8을 해석할 수도 있고 해석하지 않을 수도 있는 터미널 에뮬레이터입니다. 보다console_codes(4)자세한 내용은 매뉴얼 페이지를 참조하세요. 전환 컨트롤이 나열되어야 합니다.산출예를 들어 문자 집합은 다음과 같습니다.

   ESC %              Start sequence selecting character set                
   ESC % @               Select default (ISO 646 / ISO 8859-1)              
   ESC % G               Select UTF-8                                       
   ESC % 8               Select UTF-8 (obsolete) 

하지만 페이지의 마지막 댓글이이 변화2006년에는 웹 형식으로 변환하는 과정에서 일부 텍스트가 손실된 것으로 의심되었습니다. 다른 웹사이트보다 완전한 표현을 제공합니다(이 사이트에도 위의 문제가 있지만여기).

정말로 원한다면읽다매뉴얼 페이지를 사용하면 로컬 컴퓨터가 아마도 두 가지보다 더 나은 작업을 수행할 것입니다.

다음으로 끝나는 시퀀스를 사용하여 UTF-8 모드를 끄거나 켤 수 있습니다.@또는G, 각각. 나는 때때로 이 스크립트를 사용하여 이 작업을 수행합니다.

#!/bin/sh
# send character-string to enable UTF-8 mode
if test ".$1" = ".off" ; then
        printf '\033%%@'
else
        printf '\033%%G'
fi

(그리고 이것에 대해 댓글을 달았습니다.앞으로, 누군가 나에게 이 작업을 수행할 수 있는 스크립트가 있다는 것을 상기시켰습니다.나이가 많은내 스크립트보다).

관련 정보