비디오 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인코딩을 변경하려면;)