본문 바로가기

Software/JAVA

java에서 mysql 사용시 한글 입력이 깨질 경우

반응형

java 에서 mysql 을 사용하여 하는 예제를 진행하던 중, 한글을 입력하는 부분이 있는 코드를 실행하였습니다.




위의 코드를 입력하였고, 코드 실행이 완료되면 mysql 측에 내용이 전달 되고, 다시 불러오는 예제 였습니다.


실행 후 콘솔 출력을 살펴보니,




mysql 측에서 데이터를 수신 받아 사용하는 부분에서 수신되는 타입이 '???' 임을 확인 할 수 있습니다.




그래서 실제 mysql 에 저장되는 형식이 어떠한지 확인 해본 결과, 실제로 저장시에도 '???'로 저장 됨을 확인 할 수 있었습니다.


database인 'example_springbook' 의 Collation은 'utf8_unicode_ci' 로 설정하였고, 기본으로 한글에 대한 문제는 없을 것이라고 생각 하고,


진행을 하였습니다.


자료를 찾아본 결과 JDBC를 이용한 Connection 을 생성할 때, 추가하여 연결을 생성하여야 하는 것을 확인 할 수 있었습니다.


일단 mysql에 존재하는 데이터를 삭제 한 후 ( id 중복 입력이 안되게 설정이 되어있기 때문에.. ) 







위의 코드를 아래와 같이 추가 하였습니다. ( 클릭 시 확대 됩니다. )



추가 된 부분은


Connection c = DriverManager.getConnection("jdbc:mysql://10.168.3.80/example_springbook", "admin", "123456");


에서


Connection c = DriverManager.getConnection("jdbc:mysql://10.168.3.80/example_springbook

?useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8", "admin", "123456");


으로 수정 하였습니다.


수정 후 코드를 재실행 한 콘솔 출력은 아래와 같고, 한글이 정상적으로 표기 되었습니다.






mysql 측에도 한글이 정상적으로 표기 됨을 확인 할 수 있었습니다.


실행시의 수행과정을 동영상으로 작성 하였으니, 참고 하시면 되겠습니다.





반응형