시스템이 더 이상 UTF-8 문자를 출력하지 않습니다.

시스템이 더 이상 UTF-8 문자를 출력하지 않습니다.

서버가 매우 느리게 응답하는 문제가 발생하여 SSH를 통해 강제로 다시 시작했습니다. 다시 연결했을 때 시스템이 더 이상 특정 문자를 올바르게 출력하지 않는다는 것을 발견했습니다.

예: 나는 tree디렉토리의 구조와 그 내용을 빠르게 확인하기 위해 이 명령을 자주 사용하며, 다른 시스템에서 이 명령을 사용할 때 다음과 같은 출력을 얻습니다.

root@hostname:/tmp# tree
.
└── test
    ├── bar
    │   ├── bar
    │   ├── baz
    │   └── foo
    └── foo

2 directories, 4 files

그러나 지금 내 시스템에서 이 작업을 수행하면 다음과 같은 결과가 나타납니다.

root@hostname:/tmp# tree
.
ΓööΓöÇΓöÇ test
    Γö£ΓöÇΓöÇ bar
    │   ├── bar
    │   ├── baz
    │   └── foo
    ΓööΓöÇΓöÇ foo

2 directories, 4 files

어떻게 이런 일이 일어났는지 알 수 있는 방법이 있나요? 어떻게 복원할 수 있나요?

편집하다

출력 LC_ALL=C tree은 다음과 같습니다.

root@hostname:/tmp# LC_ALL=C tree
.
`-- test
    |-- bar
    |   |-- bar
    |   |-- baz
    |   `-- foo
    `-- foo

2 directories, 4 files

출력 locale은 다음과 같습니다.

root@hostname:/tmp# locale
LANG=en_GB.utf8
LANGUAGE=
LC_CTYPE="en_GB.utf8"
LC_NUMERIC="en_GB.utf8"
LC_TIME="en_GB.utf8"
LC_COLLATE="en_GB.utf8"
LC_MONETARY="en_GB.utf8"
LC_MESSAGES="en_GB.utf8"
LC_PAPER="en_GB.utf8"
LC_NAME="en_GB.utf8"
LC_ADDRESS="en_GB.utf8"
LC_TELEPHONE="en_GB.utf8"
LC_MEASUREMENT="en_GB.utf8"
LC_IDENTIFICATION="en_GB.utf8"
LC_ALL=en_GB.utf8

답변1

질문의 정보는 개략적입니다. 그러나 샘플 출력에는 인코딩 트리에 예상보다 많은 문자가 있다는 오류가 표시됩니다. treeUTF-8이 전송될 수 있는 환경에서 실행 중일 수 있습니다 . 사용된 그래픽 문자의 경우 각 특수 문자는 3바이트를 차지합니다. 한편으로는 (로컬이든 원격이든 상관 없음) OP는 다음과 같은 것을 사용하고 있습니다.녹음이를 UTF-8로 변환하여 바이트 수를 늘립니다(출력의 각 바이트 tree범위는 128-255이므로).

예를 들어 OP가 실행 중인 경우xterm(사용루잇), 그리고 (실제로) luit에게 실제 인코딩이 이라고 말하여 혼란을 주기 위해 en_GB, 128-255 값 각각을 2-3바이트로 변환합니다("UTF-8로 "반환").

그런데,세게 때리다질문과 관련이 없기 때문에나무(고유한 유틸리티) 텍스트 작성을 위한 것입니다.

답변2

LC_ALL=en_US.UTF-8을 사용하면 트리 문자는 정확하지만 정렬이 엉망이 됩니다.

정렬이 제대로 작동하도록 LC_ALL=C로 다시 변경합니다.

Mint Mate 20.1 이전에는 정렬 및 문자 문제가 없었으며 모두 잘 작동합니다.

관련 정보