• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

h2를 사용하여 test를 진행할때 한글이 들어가면 h2데이터가 깨져서 나옵니다...

20.03.24 18:30 작성 조회수 1.19k

0

h2 db의 한글 깨짐을 어떻게 해결해야할까용??

답변 4

·

답변을 작성해보세요.

0

아... 네 맞아요. 그게 스프링 HATEOAS 버전이 올라가면서 없어졌요. 한글이 그거 때문에 깨졌군요.

0

선장님 해결은 했습니다. controller에서 produce부분에 produces = MediaTypes.HAL_JSON_VALUE+";charset=UTF-8" 이라고 설정해주었더니 결과가 한글이 깨지지 않습니다. 근데 애초에 그럼 MediaTyoes에 utf-8코딩이 되어있는건 없는건가요. 강의를 볼때는 쓰신 기억이 있습니다. Hateoas버젼이 올라가서 사라진건지 없는거같습니다.

0

https://github.com/rlaguswhd19/Screening_Clinic

RESTAPI를 복습하려고 공공데이터 포털의 선별진료소 csv파일을 사용하여 구현중에있습니다.

Test를 돌릴때는 Doprint한값은 깨지지만 snippet에 한글이 제대로 들어갑니다. 하지만 mvn package를하고 snippet을 보면 한글이 깨져있습니다.

print로 찍어봤을때 csv파일에서 긁은것이 한글로 잘 나옵니다.

0

흠.. 글쎄요. H2는 유니코드를 지원해서 DB에 들어갈 때 한글이 깨지는게 아니라 그 전에 이미 한글이 깨졌고, 깨진 한글이 H2에 들어간거 같은데요.  우선은 서버쪽에서 로깅을 해서 한글이 안깨져있는지 아닌지 확인해 보시겠어요?

그리고 현재 JVM이 사용하고 있는 기본 인코딩도 출력해 보세요.

        System.out.println(Charset.defaultCharset().displayName());

이런 코드를 쓰시면 알 수 있습니다. 이게 UTF-8이 아니라면 아마도 클라이언트가 넘겨준 한글이 깨진 상태로 서버쪽에서 출력될 겁니다. (서버쪽에서 꼭 데이터 로깅해서 확인해 보세요.)

그런 경우에 자바 애플리케이션을 실행할 때 -Dfile.conding이라는 옵셥으로 원하는 인코딩을 설정할 수 있습니다.

java -Dfile.encoding="UTF-8"  이런식으로요. 인텔리J를 쓰고 계시다면 run 설정 창에 다음과 같이 vm 옵셥을 설정할 수도 있으니 참고하세요.