it-swarm-korea.com

인코딩을위한 배치 변환 파일

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

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

46
desolat

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"를 보는 것은 드문 일이 아닙니다. .

36
quack quixote

powershell 으로 다음과 같이 할 수 있습니다 :

%  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
}
29
akira

줄 바꿈의 Wikipedia 페이지에는 변환 유틸리티 섹션이 있습니다.

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

TYPE unix_file | FIND "" /V > dos_file
6
user4358

자동 감지 기능을 갖춘 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 명령은 이러한 파일 관리 자동화에 매우 유용합니다.

more find galore 을 보려면 여기를 클릭하십시오.

3
Serge Stroobandt

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

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

3
Tiler

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

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

1
Aneesh Garg

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

1
kinORnirvana

EncodingMaster 를 사용할 수 있습니다. 무료이며 Windows, Linux 및 Mac OS X 버전이 있으며 실제로 잘 작동합니다.

0
Francisco Vera

유스 케이스에서 자동 입력 인코딩 감지가 필요했고 Windows-1250 인코딩, 명령 file -bi <FILE>charset=unknown-8bit. iconv에 유효한 매개 변수가 아닙니다.

enca 로 최상의 결과를 얻었습니다.

txt 확장자를 가진 모든 파일을 utf-8로 변환

find . -type f -iname *.txt -exec sh -c 'echo "$1" && enca "$1" -x utf-8' -- {} \;
0
Bedla

유닉스에는 dos2unix가 있습니다.
Windows 용으로 비슷한 도구가 또있었습니다 ( 다른 참조 ).

유닉스와 Windows 텍스트 파일을 어떻게 변환합니까? 더 많은 트릭이 있습니다

0
nik