iconv 를 이용해서 파일 인코딩 변경이 잘 안됩니다..

망치의 이미지

iconv -f gb2312 -t utf8 ~~ 를 이용해서 파일을 변환했는데, UTF-8 로 원활하게 변환이 되지 않고 인코딩 되어야할 문자열이 있는곳에서 파일이 끝나버립니다. 몇글자만 돼있는 상태로.....
변환중 오류가 난것같은데... iconv 말고 조금 더 강력한 방법 없을까요?

wariua의 이미지

아시겠지만 변환 중에 오류가 났다는 건 입력 파일의 인코딩이 gb2312가 아니거나 파일 내용 중 일부가 깨져 있다는 뜻입니다. 다만 파일 내용 중 일부에만 문제가 있고, 그 오류는 그냥 무시하고 넘어가겠다고 하시면 방법은 있습니다.

예를 들면 다음과 같은 무심한듯시크한 파이썬 스크립트를 만들어서 iconv 대신 쓸 수 있겠습니다.

$ cat chic_iconv.py
#!/usr/bin/python
 
import sys
import codecs
 
if len(sys.argv) != 4:
	print 'Usage: %s FROM_ENCODING TO_ENCODING INPUT_FILE' % sys.argv[0]
	sys.exit()
 
from_enc = sys.argv[1]
to_enc = sys.argv[2]
in_fname = sys.argv[3]
 
fin = open(in_fname, 'r')
 
for line in fin:
	print line.decode(from_enc, errors='replace').encode(to_enc, errors='replace')
 
fin.close()
$ ./chic_iconv.py gb2312 utf8 input.txt > output.txt

$PWD `date`

망치의 이미지

감사합니다!

---------------------------------------
http://www.waitfor.com/
http://www.textmud.com/

doodoo의 이미지

iconv 에 -c (변환 안돼는 문자 무시) 옵션도 있는데...