깨지지 않는 글자
문자 인코딩은 왜 이렇게 만들어졌는가
화면에 뜬
???, 메일함의안녕, 저장하려다 사라진 이모지 — 이 모든 깨짐 뒤에는 100년이 넘는 부호의 역사와, 서로 다른 약속들의 충돌이 있다. 이 책은 글자가 어떻게 0과 1이 되는지를 처음부터 끝까지 보여준다.
이 책은 인코딩을 “그냥 UTF-8로 두면 되는 것”으로만 알고 있던 예비·주니어
개발자를 위해 썼다. 정답을 외우는 대신, 글자가 깨지던 세계의 고통에서 출발해 —
봉화와 전신, 나라마다 제각각이던 코드표, 그리고 세상의 모든 문자에 번호를 붙이려던
시도까지 — 왜 오늘의 인코딩이 그 순서로 태어났는지를 이야기로 따라간다.
각 장은 배경 → 스토리 → 핵심 세 걸음으로 나아가고, 개념마다 실행 가능한 코드(바이트를 직접 들여다보는 예제)와 그 장을 한 컷으로 요약한 삽화가 함께한다.
목차
제1부 · 글자를 나르는 법
제2부 · ASCII, 미국이 정한 128칸 4. 왜 하필 7비트였나 — ASCII의 탄생 5. 남은 한 비트의 유혹 — 확장 ASCII와 코드페이지
제3부 · 사투리 전쟁 — 인코딩 난립 6. 2바이트의 세계 — 한자와 한글을 담다 7. EUC-KR, 완성형과 조합형 — 한국의 선택 8. CP949 — 통합 완성형의 확장 9. Shift-JIS와 바다 건너의 혼란 10. ???의 정체 — 모지바케는 왜 생기나
제4부 · 유니코드 — 하나의 표로 세상을 담다 11. 모든 문자에 번호를 — 유니코드와 코드포인트 12. 표만으로는 부족하다 — UTF-16과 서로게이트
제5부 · UTF-8, 인터넷을 정복한 인코딩 13. 가변 길이의 우아함 — UTF-8은 어떻게 동작하나 14. ASCII와의 약속 — 하위 호환성이라는 승부수 15. BOM과 이모지 — 눈에 안 보이는 바이트들
제6부 · 현장의 인코딩 16. String.length가 거짓말할 때 — 이모지는 왜 2인가 17. utf8은 진짜 UTF-8이 아니다 — MySQL utf8 vs utf8mb4 18. 깨진 글자를 디버깅하다 — 인코딩 버그 현장