답변:
일부 텍스트 파일이 나중에 디코딩하기 위해 텍스트 내용과 함께 인코딩 방법을 저장하는지 궁금합니다.
Mark Szymanski의 대답은 정확합니다. 일반 텍스트 파일에는 명시적인 인코딩 정보가 없습니다. "일반 텍스트 파일"의 정의 인 "일반"은 파일에 메타 데이터가 없다는 사실을 나타냅니다.
그러나 일부 응용 프로그램은 UTF-16 또는 UTF-32 / UCS-4로 인코딩 된 텍스트 파일에 BOM ( 바이트 순서 표시 )을 배치합니다. BOM은 실제로 인코딩을 나타 내기위한 것이 아니며 (이름에서 알 수 있듯이 바이트 순서를 나타냄) 많은 애플리케이션이 BOM의 존재를 사용하여 UTF-16 / UTF-32를 인식하므로 인코딩 표시기 역할을합니다.
아니면 주어진 텍스트 파일의 인코딩 방법을 추측하는 것이 텍스트 뷰어의 일입니까, 추측이 항상 정확하지는 않습니까? 그렇다면 텍스트 뷰어는 어떻게 추측합니까?
예, 텍스트 뷰어는 추측 만 할 수 있습니다. 일반적으로 몇 가지 휴리스틱을 사용합니다.
vim
기본적으로 작동 하는 방법입니다 . 파일을 읽을 때 먼저 UTF-8을 사용하려고 시도합니다. 실패하면 ISO-8859-1로 돌아갑니다.대부분의 경우 텍스트 파일의 인코딩이 무엇인지 프로그램에 명시 적으로 알려 주어야합니다. 그렇지 않으면 파일을 올바르게 읽을 수 없습니다.
file -bi
BOM을 사용하지 않으면 어떻게 작동합니까?
file
파일 형식 및 인코딩을 결정하기위한 다양한 휴리스틱이 있습니다. 대부분 파일에서 특정 문자열 또는 바이트 시퀀스를 찾습니다. 좀 더 구체적인 정보를 원한다면 아마도 소스를 읽어야 할 것입니다. 또는 별도의 질문을하십시오 :-).
file
는 (매우 어렵 기 때문에) 대부분의 텍스트 인코딩을 안정적으로 감지 할 수 없습니다. 매뉴얼 페이지에는 문자 세트 감지에 대한 정보가 있습니다. file
대부분 ASCII, UTF-8 / 16, EBCDIC 및 ISO-8859-x 만 인식합니다. 예를 들어, KOI8-R로 인코딩 된 파일은 "ISO-8859-1"로보고됩니다.
일반 텍스트 파일은 인코딩에 대한 정보를 저장하지 않습니다. 뷰어는 사용자가 설정 한 문자 인코딩을 기반으로 결정합니다. 그것은 컴퓨터와 모두 동일하기 때문에 스스로 결정할 수 없습니다.
less
및 grep
유닉스 / 리눅스에서이 작업을 수행).