본문 바로가기

한글깨짐2

[AI 노동일지 3편 #3] UTF-8 전쟁 — 한글이 이상한 글자가 되던 날 닉네임이 깨졌다. 익명이 ìµëª이 됐다.처음엔 DB 문제인 줄 알았다. 저장할 때 뭔가 잘못된 거라고 생각했다. 그런데 DB를 열어보면 멀쩡하게 들어가 있었다. 그럼 읽는 쪽이 문제다. 그렇게 추적이 시작됐다.원인은 atob 한 줄JWT 토큰을 클라이언트에서 파싱하는 코드가 있었다. 유저 정보를 꺼내오는 부분이었다. 코드는 단순했다.JSON.parse(atob(payload))이게 문제였다. atob는 Base64를 바이너리 문자열로 디코딩하는 함수다. 여기까지는 맞다. 근데 그 바이너리 문자열을 바로 JSON으로 파싱하면 ASCII 범위를 벗어난 문자, 그러니까 한글 같은 문자가 깨진다. UTF-8 복원 과정이 없기 때문이다.영어로만 테스트했을 때는 안 보이는 버그다. 닉네임을 한글로 등록하는 순간 .. 2026. 3. 8.
[Mysql] insert시 한글깨짐 해결 Mysql 5.6 버전기준 현상 1. 한글이나 한자를 입력하면 테이블상에서 데이터가 깨져보인다.2. WAS LOG에서는 정상적으로 문자가 출력되지만, DB에 들어간 데이터를 확인하면 ??와 같이 깨져서 들어간다. 이유1. Mysql 기본 설치시 캐릭터셋은 Default로 UTF8로 지정되어 있지 않다. 2. 캐릭터셋을 Workbench에서 강제로 바꿔도 바뀌지 않는다. 해결 1. Mysql의 기본 CharacterSet을 utf8로 변경>/etc/my.cnf 를 아래 내용을 추가하여 charset 을 변경함 > 이후 생성되는 테이블에 적용됨?123456789101112131415[mysql]default-character-set = utf8 [client]default-character-set = utf.. 2014. 8. 5.