Emacs가 올바르게 표시할 수 없지만 표시되는 일반 텍스트 파일이 있습니다 less
.
less
각 개별 텍스트 파일의 인코딩 방법이 자동으로 감지되는지, 아니면 모든 텍스트 파일에 대한 단일 기본 인코딩 방법인지 궁금합니다 .
less
텍스트 파일을 디코딩하는 데 사용되는 인코딩 방법을 찾는 방법은 무엇입니까 ?
답변1
실행 파일 less
자체는 인코딩 변환을 수행하지 않습니다. 인쇄 가능한 문자를 터미널에 직접 보냅니다. 인쇄 가능한 것으로 간주되는 것은 LESSCHARSET
환경 변수에 의해 제어되지만(자세한 내용은 매뉴얼 페이지 참조) 일반적으로 이를 건드리고 싶지 않습니다. 따라서 기본적으로 인코딩은 로캘에서 가져옵니다(특정 설정이 없는 한).
LESSOPEN
환경 변수가 설정되면 입력을 필터링하고 특히 변환할 수 있습니다. 해당 필터는 일부 변환이 수행되었는지 여부를 알려줍니다. lesspipe
예를 들어 Wolfgang Friebel은 이를 수행합니다.
이 file
유틸리티를 사용하여 인코딩을 얻을 수 있습니다. 예를 들어:
$ file my_file.txt
my_file.txt: UTF-8 Unicode text
아마도 이것 은 이것 에 의존 하는 것보다 나을 것입 니다 less
.
답변2
less
오늘날 대부분의 시스템에서는 UTF-8이 사용됩니다. 에서 man less
:
If neither LESSCHARSET nor LESSCHARDEF is set, but any of the strings "UTF-8", "UTF8", "utf-8" or "utf8" is found in the LC_ALL, LC_CTYPE or LANG environment variables, then the default character set is utf-8. If that string is not found, but your system supports the setlocale interface, less will use setlocale to determine the character set. setlocale is controlled by setting the LANG or LC_CTYPE environment variables. Finally, if the setlocale interface is also not available, the default character set is latin1.
이것이 작동하는지 확인하려면 less
다음 내용이 포함된 파일을 만드십시오.
아샤
인쇄하는 데 사용합니다 less
. 모든 문자가 올바르게 표시되면 LANG
UTF-8을 포함합니다. locale
이를 보려면 명령을 사용 하거나 변수를 인쇄하십시오 $LANG
. 이제 이름에 UTF-8이 없는 로케일로 변경하십시오. 예를 들면 다음과 같습니다.
$ export LANG=en_US
파일을 다시 인쇄하십시오. 유니코드 문자는 올바르게 인쇄되지 않습니다.
나는 또한 Emacs를 사용하는데 어떤 경우에는 파일이 올바르게 표시되지 않았지만 less
작동했던 것을 기억합니다.