본문 바로가기

스프링

Spring에서 mysql Json타입 한글 깨짐 현상

https://stackoverflow.com/questions/43330184/how-can-i-fix-encoding-issues-with-mysqls-json-and-java

 

How can I fix encoding issues with MySql's JSON and Java?

Day old problem, when returning a query from the MySql database I get characters like ç instead of ç. I'm using a really simple class to try to pin the problem down: package com.dataTest; import

stackoverflow.com

 

api 작업도중에 spring에서 json타입의 컬럼을 불러올때만 한글이 깨지는 현상이 발견되었다. 

 

희한한게 다른 한글입력한 데이터는 깨지는 현상이 없는데 json타입의 컬럼을 불러올때 한글이 깨졌다.

 

데이터베이스 확인해보니 데이터는 한글로 제대로 저장되었는데 출력을 할때만 한글이 깨지더라.

 

인터넷을 찾아서 볼려고 해도 애초에 저런 케이스가 찾기가 힘들었는데 겨우겨우 찾아냈다. 

 

원인은 JSON은 utf8mb4 형태로 저장하는데 JDBC 드라이버에서 이걸 인코딩을 지원 안한단다(버전이 오르면서 잘되는것같다) 

 

해결방법은 간단하다 쿼리에다 utf8로 컨버팅 해주면된다. 

ex)

SELECT field1, field2, CONVERT(info USING utf8) as info FROM databasename.teste_json;