명령 또는 도구를 사용하여 디렉토리의 파일을 인코딩 (예 : ANSI-> UTF-8)하기 위해 파일을 일괄 변환하려면 어떻게해야합니까?
단일 파일의 경우 편집기가 도움이되지만 대량 파일 작업을 수행하는 방법은 무엇입니까?
Cygwin 또는 GnuWin32iconv
및 dos2unix
(및 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"를 보는 것은 드문 일이 아닙니다. .
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
}
줄 바꿈의 Wikipedia 페이지에는 변환 유틸리티 섹션이 있습니다.
이것은 Windows와 함께 제공되는 도구 만 사용하여 변환하는 것이 가장 좋습니다.
TYPE unix_file | FIND "" /V > dos_file
문자 인코딩 일치하는 모든 텍스트 파일 중 자동 감지됩니다 그리고 일치하는 모든 텍스트 파일은 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 을 보려면 여기를 클릭하십시오.
TFCast 는 배치 모드를 지원하는 Windows 용 유니 코드 변환기입니다. 유료 버전을 사용하고 있으며 매우 편안합니다.
UTFCast는 마우스 클릭 한 번으로 모든 텍스트 파일을 UTF 인코딩으로 일괄 변환 할 수있는 유니 코드 변환기입니다. 원본 파일의 디렉토리 구조를 유지하면서 텍스트 파일로 가득 찬 디렉토리를 UTF-8, UTF-16 및 UTF-32를 포함한 UTF 인코딩으로 출력 디렉토리로 변환하는 데 사용할 수 있습니다. 텍스트 파일의 확장자가 다른 경우에도 UTFCast는 텍스트 파일을 자동으로 감지하여 변환 할 수 있습니다.
iconv -f original_charset -t utf-8 originalfile > newfile
for 루프에서 위 명령을 실행하십시오.
이것을 사용하십시오 Python 스크립트 : https://github.com/goerz/convert_encoding.py 모든 플랫폼에서 작동합니다. 필수 Python = 2.7.
EncodingMaster 를 사용할 수 있습니다. 무료이며 Windows, Linux 및 Mac OS X 버전이 있으며 실제로 잘 작동합니다.
유스 케이스에서 자동 입력 인코딩 감지가 필요했고 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' -- {} \;
유닉스에는 dos2unix
가 있습니다.
Windows 용으로 비슷한 도구가 또있었습니다 ( 다른 참조 ).
유닉스와 Windows 텍스트 파일을 어떻게 변환합니까? 더 많은 트릭이 있습니다