비디오 omxplayer의 자막 파일에 문제가있었습니다. 그것을 해결하기 위해 windows-1250에서 UTF-8 인코딩으로 변환해야했습니다. 내 질문은 어떤 인코딩이 사용되는지 특정 파일을 어떻게 볼 수 있습니까?
비디오 omxplayer의 자막 파일에 문제가있었습니다. 그것을 해결하기 위해 windows-1250에서 UTF-8 인코딩으로 변환해야했습니다. 내 질문은 어떤 인코딩이 사용되는지 특정 파일을 어떻게 볼 수 있습니까?
답변:
파일이 원래 X 인코딩으로 작성된 것인지 자동으로 알 수 없습니다.
그래도 쉽게 할 수있는 일은 특정 코덱을 사용하여 전체 파일을 어떻게 든 성공적으로 디코딩 할 수 있는지 여부를 확인하는 것입니다. 주어진 인코딩에 유효하지 않은 바이트를 찾으면 다른 바이트 여야합니다.
문제는 많은 코덱이 비슷하고 동일한 "유효한 바이트 패턴"을 가지고 있으며 다른 문자로 해석한다는 것입니다. 예를 들어, ä
한 인코딩은 é
다른 인코딩 또는 ø
세 번째 인코딩에 해당 할 수 있습니다 . 컴퓨터는 바이트를 해석하는 방법을 실제로 사람이 읽을 수있는 텍스트로 해석 할 수 없습니다 (모든 종류의 언어에 대한 사전을 추가하고 맞춤법 검사를 수행하지 않는 한). ASCII 문자 인코딩은 일부 ANSI 계열 또는 UTF-8과 같이 가장 일반적으로 사용되는 코덱의 일부와 같이 일부 문자 집합은 실제로 다른 문자의 하위 집합임을 알아야합니다. 예를 들어, 단순한 라틴 문자 만 포함하는 UTF-8로 저장된 텍스트는 ASCII로 저장된 동일한 파일과 동일합니다.
그러나 할 수없는 일과 실제로 할 수있는 일에 대한 설명으로 돌아가 봅시다.
ASCII / 비 ASCII (일반적으로 UTF-8) 텍스트 파일에 대한 기본 검사의 경우 file
명령을 사용할 수 있습니다 . 많은 코덱을 알지 못하고 나머지는 새로운 문자를 포함하지 않는다고 가정하고 파일의 처음 몇 kB 만 검사합니다. 반면에, 다양한 스크립트, HTML / XML 문서 및 많은 이진 데이터 형식 (텍스트 파일을 비교하는 데 전혀 관심이 없음)과 같은 다른 일반적인 파일 형식을 인식하며 매우 긴 행이 있는지 여부에 관계없이 추가 정보를 인쇄 할 수 있습니다. 줄 바꾸기 시퀀스 유형 (예 : UNIX : LF, Windows : CR + LF)이 사용됩니다.
$ cat ascii.txt
I am an ASCII file.
Just text and numb3rs and simple punctuation...
$ cat utf8.txt
I am a Unicode file.
Special characters like Ω€®Ŧ¥↑ıØÞöäüß¡!
$ file ascii.txt utf8.txt
ascii.txt: ASCII text
utf8.txt: UTF-8 Unicode text
이것으로 충분하지 않으면 여기 에이 답변에 대해 작성한 Python 스크립트를 제공 할 수 있습니다.이 스크립트는 완전한 파일을 스캔하고 지정된 문자 세트를 사용하여 해독하려고합니다. 성공하면 해당 인코딩이 잠재적 후보입니다. 그렇지 않으면 디코딩 할 수없는 바이트가 있으면 목록에서 해당 문자 세트를 제거 할 수 있습니다.
명명 된 프로그램 file
이이를 수행 할 수 있습니다. 예:
$ echo aaa >> FILE
$ file FILE
FILE: ASCII text, with CRLF, LF line terminators
$ echo öäü >> FILE
$ file FILE
FILE: UTF-8 Unicode text, with CRLF, LF line terminators
수행 방법에 관심이있는 경우를 참조하십시오 src/encoding.c
.
file
추측하기도하는데 종종 좋지 않습니다. 예를 들어, 테스트에서 MacRoman과 CP-1252를 ISO-8859로 잘못 식별하여 "š"와 "ß"가 스크램블되었습니다.
.sql
파일 의 올바른 인코딩을 찾기 위해 몇 시간을 보냈고 file
실제로 gzip
압축 파일 이라는 것을 보여주었습니다 !
piconv
인코딩을 변경하려면;)