java프로그램중에, 한글을 입력을 받아서, txt 파일로 저장하는 부분이 있다.
영문이나 숫자로 입력을 받은 데이타들은 문제가 없었으나, 한글로 입력을 받으려고 하면 특정 상황에서 한글이 깨지는 상황이 발생했다.
FileReader, FileWriter 을 사용하고 있는데,
FileInputStream, FileOutputStream 을 사용하여, UTF-8을 적용하면 된다는 내용 확인
( http://blog.naver.com/software705/220587262406 )
FileOutputStream을 사용하여,
OutputStreamWriter writer = new OutputStreamWriter(output, "UTF-8")
하지만, 파일과 로그에는 계속 깨진 한글이 사용된다.
처음부터 추적을 해본 결과,
입력을 하는 부분에서 문제가 발생하고 있다.
콘솔창을 통하여 한글을 입력하고 있는데,
Scanner sc = new Scanner(System.in);
String a = sc.next();
입력값을 바로 확인해봐도, 깨진 한글이 들어와있다.
해결방법은,
이클립스를 종료후,
eclipse 설치폴더에 들어가서, eclipse.ini 파일을 수정
파일에 -Dfile.encoding=UTF-8 을 추가하고 저장
다시 이클립스를 시작
Scanner 를 통해서 한글입력이 가능하고,
FileOutputStream 을 사용하지 않아도, txt 파일내에 한글저장이 가능해진다.