txt 파일의 인코딩 변경


16

내가 쓸 때 :

file file1.txt 

이 출력이 있습니다 : CR 줄 종결자가있는 Little-endian UTF-16 유니 코드 텍스트

그런 다음 내가 쓴다면 :

file file2.txt 

나는 : ASCII 텍스트

file2.txt는 다음을 만들어 생성됩니다.

echo $var > "file2.txt"

file2.txt가 file1.txt와 동일한 인코딩을 갖기를 원합니다. 어떻게해야합니까?

답변:


25

iconv파일 인코딩을 변환하는 데 사용할 수 있습니다 .

iconv -f ascii -t utf16 file2.txt > another.txt

another.txt 그런 다음 원하는 인코딩이 있어야합니다.

당신은 또한 이것을 시도 할 수 있습니다 :

echo $var | iconv -f ascii -t utf16 > "file2.txt"

7

iconv 사용 :

echo "$var" | iconv --from-code=utf-8 --to-code=utf-16le --output=file2.txt

0

파일을 변환 할 때 바이트 순서 표시가 포함되어 있는지 확인해야합니다. 비록 표준은 바이트 순서 마크가 UTF-8을 사용하지 않는 것이 좋습니다 말한다 , 바이트 순서 표시하지 않고 UTF-8 및 ASCII 사이의 합법적 인 혼란이있을 수 있습니다 .

또한 바이트 순서 표시를 지정 UTF-16BE하거나 추가 UTF-16LE 하지 않으므로 먼저 UTF-16플랫폼 종속 엔디안을 사용하는 로 변환합니다 . 그런 다음 file실제 엔디안을 결정하고로 변환합니다 UTF-16LE.

마지막으로을 사용하여 파일을 만들면 파일 의 인코딩이 bash수신 되므로 매핑해야합니다.bashlocale charmap

( iconv지원되는 모든 인코딩을 나열 할 때 모두 대문자이기 때문에 모든 인코딩을 iconv -l대문자로 만듭니다.)

BASH_ENCODING="$( locale charmap | tr [:lower:] [:upper:] )"
echo $var | iconv -f "$BASH_ENCODING" -t UTF-16 > UTF-16-UNKNOWN-ENDIANNESS-FILE
FILE_ENCODING="$( file --brief --mime-encoding UTF-16-UNKNOWN-ENDIANNESS-FILE )"
iconv -f "$FILE_ENCODING" -t UTF-16LE UTF-16-UNKNOWN-ENDIANNESS-FILE > file2.txt

이것을 하향 투표 한 경우 이유를 설명해 주시겠습니까?
히스 국경
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.