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 만들때 케릭터셋을 명시하지 않으면 기본 케릭터셋이 들어가고 이는 운영 환경마다 다르다.

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

얼마 전에 DB 호스팅을 알아보다가 

네이버 클라우드 플랫폼에서 30만 캐시 지급 이벤트 ( 바로가기 ) 를 진행하고 있길래


제일 싼 서버로 쓰면 꽤 오랫동안 쓰겠다 싶어서 서버를 생성하고 ( CentOS+DB 까지 한번에 깔아준다. )

알던대로 외부에서 접속 가능한 계정을 만들고 방화벽 깔고 3306 포트까지 열었는데

개인 PC 에서 접속이 안된다.


2일동안이나 애먼 서버 삭제했다 만들었다. 방화벽 깔았다 지웠다 쇼를 다했는데.......

네이버 클라우드 플랫홈에서는 ACG로 방화벽 규칙을 설정할 수 있었다.


ACG란? 찮으니 링크로 대체



요약


원인 : 네이버 클라우드 플랫폼엔 ACG를 통해 개별적으로 방화벽을 구축할 필요 없이 ACG에 서버 그룹별로 방화벽 규칙을 설정할 수 있다.

해결 : ACG 에 3306 포트를 허용한다. (가이드를 읽자)

+ Recent posts