상황

MySQL 에 한국어 문자열을 담았는데 전부 ?? 로 표시된다.

추가 실험 - 이모지(😀)는 어떻게 나올까?


원인추정

아무래도 text encoding 이 원인이 아닐까 한다. euc-kr 이지 않을까? 하는 생각을 해봤다.

검증

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/9566f5cb-99fb-44ea-a369-52e1410a7906/Screen_Shot_2021-06-30_at_10.25.18_AM.png

UTF8 이었다. 무엇이 문제일까 몰라, 구글에 정말 정직하게 mysql string question mark 로 검색해보았다. 그리고 Trello 를 만든 Atlassian 에서 해당 문제를 정의하고, 진단하며, 해결한 글을 찾을 수 있었다.

The default encoding for inbound connections isn't set properly. DEFAULT CHARSET will return as utf8 however character_set_server will be something different. In the above example, the character_set_server was set as latin1.

원인도 정말 명확히 작성되어있었다. inbound connection 이 적절히 설정되지 않았기 때문이라고. character_set_server 또한 utf8 이 되어야하는데, 그렇지 않은 경우 발생하는 오류라고 한다.

여담으로, 보여준 예시에서도 latin1 이 되어있었는데, 내 예시에서도 latin1 이 되어있었다.

문제 해결 시도

default-character-set=utf8 으로 설정해주면 된다고 한다. configure setting 에서 Character Set 및 Collation 과 관련된 내용들을 담은 Atlassian의 글도 있었는데, 일단 문제 해결을 시도하려고 한다.