과거에 작업했던 자료들 중 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 |