이번에 위키의 characterset을 euc-kr에서 utf-8로 변경했습니다. 이제까지 작성했던 많은 글들이 다 euc-kr로 되어 있어 변경하는 프로그램을 하나 만들었습니다. 사실 모든 건 jvm에서 처리하는 거죠.

@convenc.jar (1.75 KB)

kiki.util.ConvEnc.java #

package kiki.util;

import java.io.*;
import java.nio.charset.Charset;
import java.util.Arrays;

public class ConvEnc
{

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception
	{
		boolean optShowHelp = false;
		String inputCharset = null;
		String outputCharset = null;
		String strBufSize = null;
		
		int paramCount = 0;
		String[] params = new String[args.length];
		for(int i=0; i<args.length; i++){
			if(args[i].startsWith("-")){
				String optId = "--buffer-size=";
				if(args[i].startsWith(optId)){
					strBufSize = args[i].substring(optId.length());
				}
				else if("-h".equals(args[i]))
					optShowHelp = true;
				continue;
			}
			params[paramCount++] = args[i];
		}
		
		if(paramCount<1 || optShowHelp){
			showHelp();
			return;
		}
		
		Charset csInput = null;
		Charset csOutput = null;
		if(paramCount==1)
			csOutput = Charset.forName(params[0]);
		if(paramCount>1){
			csInput = Charset.forName(params[0]);
			csOutput = Charset.forName(params[1]);
		}
		
		int bufSize = 1024;
		try{
			bufSize = Integer.parseInt(strBufSize);
		}
		catch(NumberFormatException nfe){}
		
		InputStreamReader isr = csInput!=null ? 
				new InputStreamReader(System.in, csInput) : new InputStreamReader(System.in);
		OutputStreamWriter osw = new OutputStreamWriter(System.out, csOutput);
		
		char[] buf = new char[bufSize];
		int len = -1;
		while( (len = isr.read(buf, 0, buf.length))>-1 ){
			osw.write(buf, 0, len);
			osw.flush();
		}
	}
	
	public static void showHelp()
	{
		System.out.println("characterset converter from stdin to stdout");
		System.out.println("mail to : kiki@hikiki.net");
		System.out.println("usages : java kiki.util.ConvEnc [-h] [--buffer-size=xxxx] [[inCharset] outCharset]");
		return;
	}
	
}



convenc #

unix shell script
java -jar convenc.jar $1 $2 $3 


@convenc.jar (1.75 KB)


unix에서의 사용예제 #

# euc-kr파일을 utf-8로 변환
cat euckr.txt | convenc euc-kr utf-8

# 스크립트 없이
cat euckr.txt | java -jar convenc.jar euc-kr utf-8
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2008-08-27 17:32:32
Processing time 0.0078 sec