일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- PubSub
- codingtest
- heap
- 연습문제
- 문제 풀이
- Java
- github push 403
- 운영체제
- github personal access token
- JSON UTF-8
- 요리책
- 코딩테스트
- JSON encoding
- 브라우저 JSON 인코딩
- CloudFunction
- chapter7
- github 403
- Python
- CPU 스케줄링
- 물리 메모리 관리
- GCP PubSub
- 네트워크와 분산 시스템
- 스프링 APPLICATION_JSON_UTF8
- 가상 메모리 기초
- 요리책 운영체제
- Algorithm
- 브라우저 JSON encoding
- github access token
- 알고리즘
- chapter8
- Today
- Total
이도(李裪)
브라우저별 JSON default encoding 본문
JSON 기본 인코딩은 UTF-8 입니다
이는 RFC 7159 (JSON 문서)에 기술되어 있고
브라우저에서도 공식적으로 따르고 있습니다
- 크롬 브라우저는 62.0부터 따르고 있고
- 파이어폭스는 53부터 따르고 있습니다
- Safari는 XMLHttpRequest 인 경우 기본적으로 UTF-8 인코딩입니다
RFC 7159 (JSON 문서)
RFC 7159 (JSON 문서)에 JSON 인코딩의 기본은 UTF-8이라고 명시하고 있습니다
https://datatracker.ietf.org/doc/html/rfc7159#section-8.1
브라우저들 JSON 인코딩 이슈 티켓과 JSON 요청 결과
크롬
https://bugs.chromium.org/p/chromium/issues/detail?id=438464 (버그 이슈)
https://chromium-review.googlesource.com/c/chromium/src/+/587829
크롬에서는 Use UTF-8 as default encoding for JSON 제목으로 올라왔고 Merged 되었습니다
XMLHttpRequest과 랜더링에서도 UTF-8을 따릅니다
파이어폭스
https://bugzilla.mozilla.org/show_bug.cgi?id=741776
내용을 읽어보시면 개발자의 불편함에 대한 분노를 느낄 수 있습니다
XMLHttpRequest과 랜더링에서도 UTF-8을 따릅니다
Safari
https://bugs.webkit.org/show_bug.cgi?id=197369
DescriptionSébastien Deleuze (Spring MVC commiter)가 남긴 코멘트가 보입니다
DescriptionSébastien Deleuze 2019-04-29 08:55:20 PDT
Hey,
I am one of the committer of Spring Framework working on our web support (Spring MVC) and we would like to stop specifying artificially UTF-8 charset for JSON (with "application/json;charset=utf-8", see https://github.com/spring-projects/spring-framework/issues/22788 for more details) since per spec "application/json" does not support charset parameter (https://tools.ietf.org/html/rfc7159#section-11) and UTF-8 should be used by default (https://tools.ietf.org/html/rfc8259#section-8.1). This very annoying bug has been fixed in September 2017 in Chrome (see https://bugs.chromium.org/p/chromium/issues/detail?id=438464) and Firefox renders as well correctly special characters with "application/json" so Safari is the last big player to not handling that correctly.
To reproduce the bug, as described in the Chrome issue please compare rendering of http://thax.hardliners.org/issue438464.php?json=1 with Firefox, Chrome and Safari. Firefox and Safari render correctly the special characters while Safari does not.
Thanks in advance for your help on this issue.
XMLHttpRequest에서는 UTF-8이 기본 encoding입니다
하지만 랜더링에서는 UTF-8이 아님을 알 수 있습니다 (html 파일의 인코딩을 따르는 걸로 생각됩니다)
스프링에서
https://github.com/spring-projects/spring-framework/issues/22788
Deprecate MediaType.APPLICATION_JSON_UTF8 in favor of APPLICATION_JSON에서 스프링이 개발자에게 XMLHttpRequest 요청에서 JSON은 기본 인코딩이 UTF-8 임을 알려주고 있습니다
그래서 MediaType.APPLICATION_JSON_UTF8을 Deprecated 시켰고 MediaType.APPLICATION_JSON_UTF8을 사용하도록 하고 있습니다
스프링 적용
Spring controller에 @RequestMapping에 produces 필드에 응답 content-type을 지정하면 됩니다
'개발' 카테고리의 다른 글
Protocol Buffers(protobuf) in Java (0) | 2021.08.30 |
---|---|
GitHub 403 Error. Access Token 설정 방법 (0) | 2021.08.14 |
자바 문자열 해시코드 - Java String hash code (0) | 2021.08.01 |
Java Memory Management, Primitive Type And Reference Type, String Pool (0) | 2021.08.01 |
HTTP GET method with payload body (0) | 2021.07.29 |