강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

티티티님의 프로필 이미지
티티티

작성한 질문수

김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션

HTTP 서버 활용 - 회원 관리 서비스2

RequestBody를 읽어올 때

작성

·

33

0

RequestBody를 읽어올 때,
Content-Length의 값을 파싱하고 그 크기만큼 read()에 배열 형태로 전달해서 버퍼형태로 한번에 받아오게끔 작성하셨습니다.

 

여기서 궁금한 점은,

Content-Length는 byte 단위로 측정이 될텐데,

char[]를 그대로 사용하면 UTF-8로 디코딩이 자동으로 되는 이유가 궁금합니다..!

 

byte[] 단위로 읽어온 다음,
Charset을 지정해서 디코딩해야하는거 아닌가욤?

 

감사합니다!

답변 2

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 티티티님

BufferedReader를 생성할 때 InputStreamReader에 UTF_8 Charset을 명시적으로 지정했기 때문입니다.

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다. 티티티님.

질문해주신 내용은 HTTP 요청의 RequestBody를 읽을 때의 인코딩 및 디코딩 문제를 다루고 있습니다. 올바른 charset 처리가 되지 않으면 문자 인코딩 문제가 발생할 수 있다는 점에 대한 이해가 필요합니다.

UTF-8이나 다른 인코딩을 사용하여 데이터가 엔지니어링되었을 때, 일반적으로 이를 처리할 때는 바이트 배열로 읽어들인 후, 지정된 Charset을 사용하여 디코딩하게 됩니다. 하지만 스프링을 포함한 많은 라이브러리에서는 HTTP 메시지의 Content-Type 헤더에 명시된 charset을 자동으로 인식하여 문자 스트림으로 변환해 주는 기능을 제공합니다.

이와 관련된 좀 더 자세한 정보는 아래의 유사한 질문을 통해 확인하실 수 있습니다:

해당 질문은 Spring 등의 프레임워크가 HTTP 요청을 처리할 때, 인코딩 설정에 따라 자동으로 디코딩하여 바이트 데이터를 문자열 데이터로 변환해 주는 부분을 이해하시면 도움이 될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

티티티님의 프로필 이미지
티티티

작성한 질문수

질문하기