Linux에서 ASCII 파일을 ANSI로 변환해 보세요.
$ file -bi relocate.xml
text/xml; charset=us-ascii
$ iconv -f us-ascii -t ms-ansi < relocate.xml | file -bi -
text/xml; charset=us-ascii
$ cat relocate.xml | recode us-ascii..ms-ansi | file -bi -
Request: ANSI_X3.4-1968..:libiconv:..CP1252
Shrunk to: ANSI_X3.4-1968..CP1252
text/xml; charset=us-ascii
또한 인코딩을 추론하기 위해 다른 도구를 사용해 보았지만 모두 동일한 결과를 반환했습니다.
$ enca -L none relocate.xml ; echo "###" ; uchardet relocate.xml ; echo "###" ; encguess relocate.xml
7bit ASCII characters
CRLF line terminators
###
ASCII
###
relocate.xml US-ASCII
iconv
보시다시피 도구 및 도구의 오류 메시지는 없지만 recode
최종 인코딩은 여전히 us-ascii
.
ANSI로 어떻게 변환하나요?
답변1
변환 중인 인코딩(ms-ansi = windows-1252)이 변환 중인 인코딩(ascii)의 상위 집합인 경우 iconv
분명히 할 일이 없기 때문에 그대로 유지됩니다.
또한 파일의 "문자 집합"은 일종의 필수 메타데이터가 아니며 file
유틸리티는 단지추측하다, 약 20%의 확률로 실패하는 신뢰할 수 없는 경험적 방법을 사용하는 것이 그럴 수 있습니다.
예:
$ printf '%s\n' '<?xml version="1.0" encoding="UTF-8"?>' '<a>' '<b>'{0..100000}'</b>' '<c>