JSON기초와 문법

UTF-8 and Unicode

네트워크로 주고받는 JSON의 UTF-8 규칙, BOM 주의점, Unicode escape와 실제 문자 표현의 차이를 정리합니다.

마지막 수정 2026년 3월 20일

기본 패턴

json
{
  "lang": "한국어",
  "emoji": "😀",
  "escaped": "\uD83D\uDE00"
}

설명

  • RFC 8259는 닫힌 생태계 밖에서 시스템 간 교환되는 JSON text는 UTF-8로 인코딩해야 한다고 규정합니다.
  • 네트워크 전송 JSON 앞에 BOM(Byte Order Mark)을 붙이면 상호운용성이 떨어질 수 있습니다. parser가 무시할 수도 있지만, 생성 쪽에서는 넣지 않는 편이 원칙에 가깝습니다.
  • JSON string은 Unicode 문자를 담을 수 있으며, 직접 문자로 써도 되고 \uXXXX escape로 표현할 수도 있습니다.
  • 같은 문자를 실제 글자와 escape 형태로 다르게 적을 수 있으므로, 단순 문자열 비교나 정규화 문제를 생각해야 할 때가 있습니다.
  • 한글, 이모지, 특수 기호가 섞인 데이터라면 "저장 인코딩", "전송 인코딩", "애플리케이션 문자열 처리"를 한 번에 점검하는 편이 좋습니다.

빠른 정리

항목핵심 규칙
네트워크 전송UTF-8 사용 권고가 아니라 사실상 표준
BOM생성 시 넣지 않는 편이 안전
Unicode 문자직접 문자 또는 \uXXXX escape 가능
비교 주의같은 문자도 표현 방식이 다를 수 있음

주의할 점

JSON이 깨졌다고 느껴질 때 실제 원인은 문법보다 인코딩인 경우도 많습니다. 특히 파일 저장 인코딩과 HTTP 응답 인코딩이 어긋나면, JSON 자체는 유효해도 애플리케이션에서는 깨진 글자로 보일 수 있습니다.

참고 링크

2 sources