본문 바로가기

BIZ

인코딩 변경

과거에 작업했던 자료들 중 git에 올라가던 java 자료들의 encoding이 ms949인걸 확인했다.

 

이클립스에서 프로젝트를 생성하면 default 인코딩이 ms949라 이대로 push하는 케이스가 좀 있었던 것 같다.

 

인터넷 찾아보니 폴더 하위를 reculsive하게 전체 파일을 찾고

 

자바파일을 필터링해서 인코딩 변환하는 프로그램을 찾기 귀찮아서

 

ms949에서 utf-8로 인코딩 변경하는 프로그램을 직접 작성해 보았다.

 

다른 인코딩을 변경하고 싶으면 MS949와 UTF-8만 원하는 인코딩 형식으로 변경하면 된다.

 

package test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import java.nio.charset.Charset;

public class FileCharsetUtil {
	
	public static void main(String[] args) {
		System.out.println("=============== convert start ===============");
		getFileList("C:\\Users\\admin\\git\\Algorithm\\src".replaceAll("\\\\", "/"), 0);		
		System.out.println("=============== convert end ===============");
	}
	
	public static void getFileList(String rootpath, int depth) {
		String indent = "";
		for(int i=0;i<depth;i++) indent=indent.concat(" ");
		System.out.println(indent+"- rootpath:"+rootpath);
		File path = new File(rootpath);
		FileFilter javafilter = new FileFilter() {
		    public boolean accept(File f) {
		        return f.getName().endsWith("java");
		    }
		};
		FileFilter dirfilter = new FileFilter() {
		    public boolean accept(File f) {
		        return !f.getName().endsWith("java");
		    }
		};
		File[] javalist = path.listFiles(javafilter);
		for(File f : javalist) {
			System.out.println(indent+"name:"+f.getName());
			try {
				convertEncoding(f.getAbsolutePath(), f.getAbsolutePath());
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		File[] dirlist = path.listFiles(dirfilter);
		for(File f : dirlist) {
			System.out.println(indent+"dir:"+f.getName());
			getFileList(f.getAbsolutePath(), depth+1);
		}
	}
	 
    public static void convertEncoding(String inFileName, String outFileName) throws Exception {
        FileInputStream fileInputStream = null;
        Reader reader = null;
        Writer writer = null;
        StringBuffer stringBuffer = new StringBuffer();
         
        int intRead = 0;
         
        fileInputStream = new FileInputStream(inFileName);
        Charset inputCharset = Charset.forName("MS949");
        InputStreamReader isr = new InputStreamReader(fileInputStream, inputCharset);
         
        reader = new BufferedReader(isr);
         
        while( ( intRead = reader.read() ) > -1 ) {
            stringBuffer.append((char)intRead);
        }
        reader.close();
         
        FileOutputStream fos = new FileOutputStream(outFileName);
        writer = new OutputStreamWriter(fos, "UTF-8");
        writer.write(stringBuffer.toString());
        stringBuffer.setLength(0);
        writer.close();
    }
}

 

 

 

'BIZ' 카테고리의 다른 글

네이밍 컨벤션  (0) 2020.03.10
기간계/계정계/정보계/대외계  (0) 2020.02.26
VAN 과 PG  (0) 2020.01.29