텍스트 파일은 나중에 디코딩하기 위해 인코딩 방법을 저장합니까?


19
  1. 일부 텍스트 파일이 나중에 디코딩하기 위해 텍스트 내용과 함께 인코딩 방법을 저장하는지 궁금합니다.
  2. 아니면 주어진 텍스트 파일의 인코딩 방법을 추측하는 것이 텍스트 뷰어의 일입니까, 추측이 항상 정확하지는 않습니까? 그렇다면 텍스트 뷰어는 어떻게 추측합니까?

일반 텍스트 파일 인 경우 인코딩에 대해 아무 것도 저장하지 않습니다. 그러나 풍부한 텍스트를 말할 수는 없습니다.
Wuffers

예, 나는 평문에 대해 이야기하고 있습니다.
Tim

답변:


19

일부 텍스트 파일이 나중에 디코딩하기 위해 텍스트 내용과 함께 인코딩 방법을 저장하는지 궁금합니다.

Mark Szymanski의 대답은 정확합니다. 일반 텍스트 파일에는 명시적인 인코딩 정보가 없습니다. "일반 텍스트 파일"의 정의 인 "일반"은 파일에 메타 데이터가 없다는 사실을 나타냅니다.

그러나 일부 응용 프로그램은 UTF-16 또는 UTF-32 / UCS-4로 인코딩 된 텍스트 파일에 BOM ( 바이트 순서 표시 )을 배치합니다. BOM은 실제로 인코딩을 나타 내기위한 것이 아니며 (이름에서 알 수 있듯이 바이트 순서를 나타냄) 많은 애플리케이션이 BOM의 존재를 사용하여 UTF-16 / UTF-32를 인식하므로 인코딩 표시기 역할을합니다.

아니면 주어진 텍스트 파일의 인코딩 방법을 추측하는 것이 텍스트 뷰어의 일입니까, 추측이 항상 정확하지는 않습니까? 그렇다면 텍스트 뷰어는 어떻게 추측합니까?

예, 텍스트 뷰어는 추측 만 할 수 있습니다. 일반적으로 몇 가지 휴리스틱을 사용합니다.

  • 일부 인코딩 (특히 UTF-8)에서는 모든 바이트 시퀀스가 ​​유효한 것은 아닙니다. 따라서 응용 프로그램은 파일을 UTF-8로 디코딩하려고 할 수 있습니다. 성공하면 파일은 아마도 UTF-8 일 것입니다. 잘못된 바이트 시퀀스를 찾아서 실패하면 그렇지 않습니다. 이것은 예를 들어 vim기본적으로 작동 하는 방법입니다 . 파일을 읽을 때 먼저 UTF-8을 사용하려고 시도합니다. 실패하면 ISO-8859-1로 돌아갑니다.
  • 가장 오래된 8 비트 인코딩에서는 모든 바이트 시퀀스가 ​​유효합니다. 이 경우 바이트 히스토그램 (다른 바이트 / 바이트 시퀀스의 빈도)을 보면 인코딩을 추측 할 수 있습니다. Internet Explorer는 페이지 인코딩을 "추측"하기 위해이 작업을 수행했습니다. 그러나 이것은 오류가 발생하기 쉽기 때문에이 작업을 수행하는 프로그램은 거의 없습니다.

대부분의 경우 텍스트 파일의 인코딩이 무엇인지 프로그램에 명시 적으로 알려 주어야합니다. 그렇지 않으면 파일을 올바르게 읽을 수 없습니다.


file -biBOM을 사용하지 않으면 어떻게 작동합니까?
Old Geezer

@OldGeezer : file파일 형식 및 인코딩을 결정하기위한 다양한 휴리스틱이 있습니다. 대부분 파일에서 특정 문자열 또는 바이트 시퀀스를 찾습니다. 좀 더 구체적인 정보를 원한다면 아마도 소스를 읽어야 할 것입니다. 또는 별도의 질문을하십시오 :-).
sleske

@OldGeezer : 그리고 BTW file는 (매우 어렵 기 때문에) 대부분의 텍스트 인코딩을 안정적으로 감지 할 수 없습니다. 매뉴얼 페이지에는 문자 세트 감지에 대한 정보가 있습니다. file대부분 ASCII, UTF-8 / 16, EBCDIC 및 ISO-8859-x 만 인식합니다. 예를 들어, KOI8-R로 인코딩 된 파일은 "ISO-8859-1"로보고됩니다.
sleske

4

일반 텍스트 파일은 인코딩에 대한 정보를 저장하지 않습니다. 뷰어는 사용자가 설정 한 문자 인코딩을 기반으로 결정합니다. 그것은 컴퓨터와 모두 동일하기 때문에 스스로 결정할 수 없습니다.


따라서 텍스트 뷰어는 텍스트 파일의 인코딩 방법을 구별 할 수 없습니다. 텍스트 뷰어에 객체 / 실행 파일이 제공되면 텍스트 파일이 아니라고 말할 수 있습니까?
Tim

아니, 안돼 텍스트 파일처럼 열려고 시도합니다. 그리고 물론 많은 깨진 물건들을 보여줄 것입니다. 인코딩을 구별 할 수있는 유일한 방법은 인코딩을 수동으로 변경하는 것입니다.
Wuffers

@ 팀 : 대부분의 텍스트 뷰어는 휴리스틱을 사용하여 텍스트 파일인지 확인합니다. 파일이 많은 인쇄 할 수없는 문자가있는 경우, 많은 시청자와 에디터는 경고 (예를 들면 것 lessgrep유닉스 / 리눅스에서이 작업을 수행).
sleske
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.