인코딩을위한 배치 변환 파일 변환하려면 어떻게해야합니까? 단일 파일의 경우 편집기가

명령 또는 도구를 사용하여 디렉토리의 파일을 인코딩 (예 : ANSI-> UTF-8)으로 일괄 변환하려면 어떻게해야합니까?

단일 파일의 경우 편집기가 도움이되지만 대량 파일 작업을 수행하는 방법은 무엇입니까?



답변

Cygwin 또는 GnuWin32iconvdos2unix(및 unix2dos) 과 같은 유닉스 도구를 제공합니다 . Unix / Linux / Cygwin에서 ANSI 대신 “windows-1252″를 인코딩으로 사용하려고합니다 (아래 참조). (시스템이 1252 이외의 코드 페이지를 기본 코드 페이지로 사용하고 있다는 것을 알지 못하는 경우 iconv 에 번역 할 올바른 코드 페이지를 알려야 합니다.)

다음을 사용하여 하나 ( -f) 에서 다른 ( )로 변환하십시오 -t.

$ iconv -f windows-1252 -t utf-8 infile > outfile

또는 찾기 및 정복 형태 :

## this will clobber the original files!
$ find . -name '*.txt' -exec iconv --verbose -f windows-1252 -t utf-8 {} \> {} \;

또는

## this will clobber the original files!
$ find . -name '*.txt' -exec iconv --verbose -f windows-1252 -t utf-8 -o {} {} \;

이 질문은이 사이트에서 여러 번 요청되었으므로 “ANSI”에 대한 추가 정보가 있습니다. CesarB는 관련 질문에 대한 답변에서 다음과 같이 언급합니다 .

Windows에는 “ANSI”라고하는 몇 가지 인코딩이 있습니다. 실제로
ANSI는 잘못된 이름 입니다. iconv에는 원하는 것을 추측 할 수있는 방법이 없습니다.

ANSI 인코딩은 Windows API의 “A”기능에서 사용되는 인코딩입니다 ( “W”기능은 UTF-16을 사용함). 해당 인코딩은 일반적으로 Windows 시스템 언어에 따라 다릅니다. 가장 일반적인 것은 CP 1252 (Windows-1252라고도 함)입니다. 따라서 편집기에서 ANSI라고 할 때 이는 시스템에서 사용되는 기본 비 유니 코드 인코딩 (일반적으로 텍스트 파일에 사용되는 인코딩) 인 “API 함수가 기본 ANSI 인코딩으로 사용하는 것”을 의미합니다.

그가 링크 한 페이지 는 CP 1252와 ISO-8859-1의 기원에 대한 이 역사적인 tidbit ( Microsoft PDF 에서 인용 )를 제공합니다.

[…] 이것은 Windows 코드 페이지 1252가 원래 ISO 표준 8859-1이 된 ANSI 초안을 기반으로한다는 사실에서 비롯된 것입니다. 그러나 ISO 표준에서 제어 코드 용으로 예약 된 범위에 코드 포인트를 추가 할 때 Windows 코드 페이지 1252와 원래 ISO 8859-x 시리즈를 기반으로하는 후속 Windows 코드 페이지는 ISO에서 벗어났습니다. 현재까지 Microsoft 내부와 외부에서 개발 커뮤니티가 8859-1 코드 페이지를 Windows 1252와 혼동하고 Windows 코드 페이지 지원을 나타내는 데 사용되는 “ANSI”또는 “A”를 보는 것은 드문 일이 아닙니다. .


답변

파워 쉘 이 같은 작업을 수행 할 수 있습니다 :

%  get-content IN.txt | out-file -encoding ENC -filepath OUT.txt

ENC는 유니 코드, 아스키, utf8, utf32와 같은 것입니다. 체크 아웃 ‘도움말 파일’.

디렉토리의 모든 * .txt 파일을 utf8로 변환하려면 다음과 같이하십시오.

% foreach($i in ls -name DIR/*.txt) { \
       get-content DIR/$i | \
       out-file -encoding utf8 -filepath DIR2/$i \
  }

DIR2에 각 .txt 파일의 변환 된 버전을 만듭니다.

편집 : 모든 하위 디렉토리의 파일을 바꾸려면 다음을 사용하십시오.

% foreach($i in ls -recurse -filter "*.java") {
    $temp = get-content $i.fullname
    out-file -filepath $i.fullname -inputobject $temp -encoding utf8 -force
}

답변

개행의 Wikipedia 페이지에는 변환 유틸리티 에 대한 섹션이 있습니다 .

이것은 Windows와 함께 제공되는 도구 만 사용하여 변환하는 것이 가장 좋습니다.

TYPE unix_file | FIND "" /V > dos_file

답변

UTFCast 는 배치 모드를 지원하는 Windows 용 유니 코드 변환기입니다. 유료 버전을 사용하고 있으며 매우 편안합니다.

UTFCast는 마우스 클릭만으로 모든 텍스트 파일을 UTF 인코딩으로 일괄 변환 할 수있는 유니 코드 변환기입니다. 원본 파일의 디렉토리 구조를 유지하면서 텍스트 파일로 가득 찬 디렉토리를 UTF-8, UTF-16 및 UTF-32를 포함한 UTF 인코딩으로 출력 디렉토리로 변환하는 데 사용할 수 있습니다. 텍스트 파일의 확장자가 다른 경우에도 UTFCast는 텍스트 파일을 자동으로 감지하여 변환 할 수 있습니다.


답변

자동 감지 기능을 갖춘 find를 사용한 Oneliner

일치하는 모든 텍스트 파일 의 문자 인코딩자동으로 감지 되고 일치하는 모든 텍스트 파일이 utf-8인코딩 으로 변환됩니다 .

$ find . -type f -iname *.txt -exec sh -c 'iconv -f $(file -bi "$1" |sed -e "s/.*[ ]charset=//") -t utf-8 -o converted "$1" && mv converted "$1"' -- {} \;

이러한 단계를 수행하기 위해 하위 쉘 sh이와 함께 사용되며 플래그 -exec와 함께 하나의 라이너를 실행 -c하고 파일 이름을와 "$1"함께 위치 인수로 전달합니다 -- {}. 그 사이에 utf-8출력 파일의 이름은 임시로 지정 converted됩니다.

find명령은 이러한 파일 관리 자동화에 매우 유용합니다.

여기를 클릭 find많음 .


답변

iconv -f original_charset -t utf-8 originalfile > newfile

for 루프에서 위 명령을 실행하십시오.


답변

이 Python 스크립트를 사용하십시오. https://github.com/goerz/convert_encoding.py 모든 플랫폼에서 작동합니다. Python 2.7이 필요합니다.