Linux/Unix 에서 iconv 를 사용 하여 인 코딩 변환

iconv 명령 은 linux/unix 플랫폼 에서 실행 되 는 파일 인 코딩 교환 도구 입 니 다.Liux/unix 시스템 셸 에서 텍스트 파일 을 볼 때 파일 의 중국어 가 어 지 러 운 것 을 자주 발견 할 수 있 습 니 다. 이것 은 텍스트 파일 의 인 코딩 이 현재 운영 체제 에서 설정 한 인 코딩 과 다 르 기 때문에 발생 한 것 입 니 다. 이 때 iconv 를 사용 하여 인 코딩 변환 을 하여 어 지 러 운 문 제 를 해결 할 수 있 습 니 다.텍스트 파일 의 인 코딩 문 제 를 해결 하 는 것 은 3 단계 로 나 뉜 다. 1. 파일 인 코딩 을 확인 하고 2. 이 인 코딩 의 변환 을 지원 하 는 지 확인 하 십시오. 3. iconv/Unix 운영 체제 인 코딩 을 확인 하고 4. 파일 인 코딩 을 시스템 인 코딩 과 일치 하도록 변환 합 니 다.다음은 test. txt 파일 을 예 로 들 겠 습 니 다.
 
1. Linux 명령 을 사용 하여 파일 인 코딩 을 확인 합 니 다.
 
file test.txt
ISO-8859 text, with CRLF line terminators

  
 
다음 명령 을 사용 하여 더욱 정확 한 인 코딩 을 얻 기 시작 합 니 다.
 
file -bi test.txt | sed -e 's/.*[ ]charset=//' |tr '[a-z]' '[A-Z'
ISO-8859-1

 test. txt 파일 인 코딩 이 ISO - 8859 - 1 인 코딩 임 을 알 수 있 습 니 다.
 
2. iconv - l 을 사용 하여 iconv 가 이러한 인 코딩 의 변환 을 지원 하 는 지 확인 합 니 다.
$ iconv -l | grep ISO-8859-1
ISO-8859-1//
ISO-8859-10//
ISO-8859-11//
ISO-8859-13//
ISO-8859-14//
ISO-8859-15//
ISO-8859-16//

 
3. 확인 file/Unix 운영 체제 인 코딩:
$ echo $LANG
zh_CN.UTF-8

 현재 운영 체제 오류 인 코딩 은 "UTF - 8"입 니 다.
 
4. 변환 코드
     주: file 명령 이 자주 인 코딩 을 오심 하기 때문에 변 환 된 인 코딩 이 여전히 난 장 판 인 것 을 발견 하면 iconv - f 의 입력 인 코딩 을 다른 상용 인 코딩 으로 바 꿀 수 있 습 니 다. GBK, BIG 5, HZ, GB 2312, GB 18030, ASCII.
또한 인 코딩 을 변환 할 때 원본 형식 을 GB 2312 로 설정 하면 UTF - 8 로 변환 할 때 프로그램 이 'illegal input sequence at position xxxx' 의 오 류 를 보고 합 니 다.이것 은 네가 이전에 한 가정 에 문제 가 있 기 때문이다.GB 2312 는 국가 표준 중 가장 작고 최초의 중국어 코드 표준 이다.이 가운데 한자 6, 763 개 만 포함 됐다.그래서 변환 해 야 할 파일 의 원본 형식 은 GB 2312 인 코딩 이 아 닐 수도 있 습 니 다.이 럴 때 GB 18030 을 소스 형식 으로 바 꿀 수 있다.GB 18030 은 최신 국가 표준 으로 27, 564 개의 한 자 를 포함 하고 GB 2312 와 GBK 를 아래로 호 환 한다.
가정 한 문자 집합 지정, 상기 상황 은 iconv 에 - c 옵션 을 추가 할 수 있 습 니 다. 잘못된 문 자 를 무시 하고 변환 에 성공 할 수 있 습 니 다.
 
iconv 명령 은 지정 한 파일 의 인 코딩 을 변환 하 는 데 사 용 됩 니 다. 기본 값 은 표준 출력 장치 로 출력 되 고 출력 파일 도 지정 할 수 있 습 니 다.
용법: iconv [옵션...] [파일...]
다음 옵션 을 사용 할 수 있 습 니 다:
입 출력 형식:
- f, -- from - code = 이름 원본 텍스트 인 코딩
- t, -- to - code = 이름 출력 인 코딩
정보:
- l, -- list 는 이미 알 고 있 는 모든 문자 집합 을 열거 합 니 다.
출력 제어:
- c 출력 에서 잘못된 문자 무시
- o, -- output = FILE 출력 파일
- s, -- silent 종료 경고
-- verbose 출력 진행 정보
-?, --help 이 시스템 도움말 목록 을 보 여 줍 니 다.
-- usage 는 간략 한 용법 정 보 를 제공한다
- V, -- version 프린터 버 전 번호
예:
iconv -f utf-8 -t gb2312 aaa.txt >bbb.txt
이 명령 은 aaa. txt 파일 을 읽 고 utf - 8 인 코딩 에서 gb 2312 인 코딩 으로 변환 하 며 출력 은 bb. txt 파일 로 향 합 니 다.
 
첨부:
파일 이름 변환
현재 Liux 를 사용 하고 있 기 때문에 windows 에 있 던 파일 은 모두 GBK 로 인 코딩 되 어 있 었 다.그래서 copy 에서 Liux 까지 는 어 지 러 운 코드 입 니 다. 파일 내용 은 iconv 로 변환 할 수 있 지만 많은 중국어 파일 이름 인지 어 지 러 운 코드 입 니 다. 파일 이름 인 코딩 을 변환 할 수 있 는 명령 을 찾 으 면 convmv 입 니 다.
convmv 명령 상세 매개 변수
예컨대
convmv -f GBK -t UTF-8 *.mp3
그러나 이 명령 은 직접적 으로 바 뀌 지 않 는 다. 전환 전후의 대 비 를 볼 수 있다.바 르 게 전환 하려 면 인자 -- notest 를 추가 해 야 합 니 다.
convmv -f GBK -t UTF-8 --notest *.mp3
- f 매개 변 수 는 변환 전의 인 코딩 을 가리 키 며, - t 는 변환 후의 인 코딩 입 니 다.이거 절대 틀 리 지 마.안 그러면 난 장 판 일 수도 있어.또 하나의 매개 변 수 는 매우 유용 하 다.바로 - r 이것 은 현재 디 렉 터 리 의 모든 하위 디 렉 터 리 를 재 귀적 으로 변환 하 는 것 을 나타 낸다.
3. 더 좋 은 바보 형 명령 행 도구 enca 는 파일 의 인 코딩 을 스마트 하 게 식별 할 수 있 을 뿐만 아니 라 일괄 변환 도 지원 합 니 다.
1. 설치
$sudo apt-get install enca
2. 현재 파일 인 코딩 보기
enca -L zh_CN ip.txt
Simplified Chinese National Standard; GB2312
Surrounded by/intermixed with non-text data
3. 전환
명령 형식 은 다음 과 같다.
$enca - L 현재 언어 - x 대상 인 코딩 파일 이름
예 를 들 어 현재 디 렉 터 리 에 있 는 모든 파일 을 utf - 8 로 변환 합 니 다.
enca -L zh_CN -x utf-8 *
enca -L zh_CN file 검사 파일 의 인 코딩
enca -L zh_CN - x UTF - 8 file 파일 인 코딩 을 "UTF - 8"인 코딩 으로 변환
enca -L zh_CN - x UTF - 8 < file 1 > file 2 원본 파일 을 덮어 쓰 지 않 으 려 면 간단 하 죠.
 
사실 notepad++ 로 변환 할 수 있 습 니 다. notepad + 변환 은 매우 간단 합 니 다. windows 에 서 는 Notepad + 로 파일 형식 을 연 후 '형식' 도구 모음 을 선택 한 다음 어떤 형식 으로 변환 할 지 선택 할 수 있 습 니 다.
 

좋은 웹페이지 즐겨찾기