DB 를 조회해서 CSV 파일로 다운로드하는 작업이 로컬에서는 동작하는데 운영서버에서는 한글이 깨진다.


확인 해본 결과 FileWriter 를 만들 때 케릭터셋을 지정해주지 않으면 디폴트 케릭터셋이 들어가고 이는 운영환경에 따라 달라질 수 있다.


// 원래 코드
new OutputStreamWriter(new BufferedOutputStream(response.getOutputStream()));
// 수정
new OutputStreamWriter(new BufferedOutputStream(response.getOutputStream()),Charset.forName("EUC-KR"));


euc-kr 을 이용한 이유는 utf-8 , utf-16 등 케릭터셋을 이용하면 ms-office로 csv 파일을 열때 한글이 깨진다. 

운영서버 기본 케릭터 셋이 utf 로 생각됨. 


요약


원인 : FileWriter 만들때 케릭터셋을 명시하지 않으면 기본 케릭터셋이 들어가고 이는 운영 환경마다 다르다.

해결 : 케릭터셋을 명시적으로 넣어주거나 운영환경과 개발환경 세팅을 똑같이 한다.

+ Recent posts