보통 이런 글은 적지 않지만, 제가 필요한 코드라서 아카이빙용으로 남깁니다.
==
보통 Java에서 파일 인풋을 받을 때는
BufferedReader br = new BufferedReader(new FileReader(new File(args[0])));
로 파일 (args[0])를 읽어서 tmpStr = br.readLine())로 한 라인씩 읽어들입니다.
그런데 파일이 UTF-8인 경우, EUC-KR로 변환해서 볼 필요가 있습니다.
이럴 때면
String euc = new String(tmpStr.getBytes("UTF-8"), "EUC-KR");
로 해서 UTF-8 스트링을 EUC-KR 스트링으로 변환하면 된다고 생각합니다.
일반적인 경우, 위의 코드에는 별 문제가 없습니다.
그런데 실제 사용해보니 스트링변환이 제대로 이뤄지지 않는다는 것을 확인했습니다.
그래서 다른 프로그램들이 보통 파일을 읽어들일 때 인코딩을 지정해주듯이,
자바에서도 UTF-8 인코딩을 지정해서 읽어들이면 되지 않을까?라고 생각했습니다.
그래서, 위의 코드에서 FileReader/FIle로 읽는 대신, 아래와 같이 InputStreamReader/FileInputStream를 사용했습니다.
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(args[0]), "UTF8"));
이렇게 코드를 수정해서 사용하니 보통 EUC-KR 파일을 읽어들일 때와 똑같이 작동합니다.