인코딩2 [AI 노동일지 3편 #3] UTF-8 전쟁 — 한글이 이상한 글자가 되던 날 닉네임이 깨졌다. 익명이 ìµëª이 됐다.처음엔 DB 문제인 줄 알았다. 저장할 때 뭔가 잘못된 거라고 생각했다. 그런데 DB를 열어보면 멀쩡하게 들어가 있었다. 그럼 읽는 쪽이 문제다. 그렇게 추적이 시작됐다.원인은 atob 한 줄JWT 토큰을 클라이언트에서 파싱하는 코드가 있었다. 유저 정보를 꺼내오는 부분이었다. 코드는 단순했다.JSON.parse(atob(payload))이게 문제였다. atob는 Base64를 바이너리 문자열로 디코딩하는 함수다. 여기까지는 맞다. 근데 그 바이너리 문자열을 바로 JSON으로 파싱하면 ASCII 범위를 벗어난 문자, 그러니까 한글 같은 문자가 깨진다. UTF-8 복원 과정이 없기 때문이다.영어로만 테스트했을 때는 안 보이는 버그다. 닉네임을 한글로 등록하는 순간 .. 2026. 3. 8. [본격 게시판짜기 Part3.6 Spring MVC] multipartResolver를 활용한 파일업로드 변경하기 2012/06/13 - [Lecture/HTML] - [본격 게시판짜기 Part1.1 - 게시판도 HTML부터] 게시글 리스트 2012/06/13 - [Lecture/HTML] - [본격 게시판짜기 Part1.2 - 게시판도 HTML부터] 글입력폼 2012/06/13 - [Lecture/Javascript-기초] - [본격 게시판짜기 Part1.3 - Dom 맛보기 ] 글입력폼 검사 2012/06/13 - [Lecture/Jsp] - [본격 게시판짜기 Part1.4 - HTML-> JSP] form 파라미터 받기 2012/06/26 - [Lecture/SQL / Oracle] - [본격 게시판짜기 Part1.5 JSP > Oracle] 게시판 DB 테이블 생성 2012/06/26 - [Lecture/Js.. 2012. 10. 29. 이전 1 다음