ASCII에서 ANSI로의 변환이 작동하지 않습니다.

ASCII에서 ANSI로의 변환이 작동하지 않습니다.

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>

관련 정보