기본 패턴
json
{
"lang": "한국어",
"emoji": "😀",
"escaped": "\uD83D\uDE00"
}설명
- RFC 8259는 닫힌 생태계 밖에서 시스템 간 교환되는 JSON text는 UTF-8로 인코딩해야 한다고 규정합니다.
- 네트워크 전송 JSON 앞에 BOM(Byte Order Mark)을 붙이면 상호운용성이 떨어질 수 있습니다. parser가 무시할 수도 있지만, 생성 쪽에서는 넣지 않는 편이 원칙에 가깝습니다.
- JSON string은 Unicode 문자를 담을 수 있으며, 직접 문자로 써도 되고
\uXXXXescape로 표현할 수도 있습니다. - 같은 문자를 실제 글자와 escape 형태로 다르게 적을 수 있으므로, 단순 문자열 비교나 정규화 문제를 생각해야 할 때가 있습니다.
- 한글, 이모지, 특수 기호가 섞인 데이터라면 "저장 인코딩", "전송 인코딩", "애플리케이션 문자열 처리"를 한 번에 점검하는 편이 좋습니다.
빠른 정리
| 항목 | 핵심 규칙 |
|---|---|
| 네트워크 전송 | UTF-8 사용 권고가 아니라 사실상 표준 |
| BOM | 생성 시 넣지 않는 편이 안전 |
| Unicode 문자 | 직접 문자 또는 \uXXXX escape 가능 |
| 비교 주의 | 같은 문자도 표현 방식이 다를 수 있음 |
주의할 점
JSON이 깨졌다고 느껴질 때 실제 원인은 문법보다 인코딩인 경우도 많습니다. 특히 파일 저장 인코딩과 HTTP 응답 인코딩이 어긋나면, JSON 자체는 유효해도 애플리케이션에서는 깨진 글자로 보일 수 있습니다.
참고 링크
2 sources