iconv를 사용할 때 파일이 UTF-8로 변환되지 않는 이유는 무엇입니까? [복사]

iconv를 사용할 때 파일이 UTF-8로 변환되지 않는 이유는 무엇입니까? [복사]

Versions: 리눅스 2.6; 4.1.2 아이콘;

ISO 변환은 오류를 반환하지 않지만 변환된 파일은 여전히 ​​다음과 같이 나타납니다.US-ASCII.

질문foobar.txtUTF-8로 트랜스코딩하는 방법은 무엇입니까 ?

$> file -bi foobar.txt
   text/plain; charset=us-ascii

$> iconv -f US-ASCII -t UTF-8 foobar.txt >  foobar_utf8.txt
iconv: illegal input sequence at position 573167

$>iconv -f ISO-8859-1 -t UTF-8 foobar.txt >  foobar_utf8.txt
$>
$> file foobar_utf8.txt
   foobar_utf8.txt: ASCII text

답변1

ASCII는 항상 올바른 UTF-8이므로 변환이 필요하지 않습니다.예전에는ASCII.

file유틸리티는 전체 파일을 보지 않고 시작 부분만 봅니다. 충분히 크면 fileASCII가 아닌 바이트를 무시할 수 있습니다. 아마도 가능한 모든 고려 사항의 "시작"이 573167지났을 것입니다 .file

반면에 iconv변환 만 사용할 수 있습니다.모두 다 아는문자 집합은 UTF-8입니다. 몇 가지 가능한 옵션을 시도하고 성공 여부를 확인한 다음 결과 파일을 비교할 수 있습니다.

예를 들어 파일이 ISO-8859-x 버전 중 하나인 경우 생성된 파일을 검사하여 성공 여부를 측정해야 합니다. iconv파일은 573167바이트 이후에만 문제가 발생하므로 해당 cut문자 오프셋에서 시작하는 파일 부분 추출을 사용하여 file식별해 볼 수 있습니다.

관련 정보