인코딩시 Modified UTF-8만 일어난다 보아도 될까요?
영상 4:50부터 나오는 자료를 보면 3가지 내용이 나오는데요 이 중에서
문자열 처리 과정에서는 UTF-16BE를 Modified UTF-8로 변경해 처리
해당 내용의 이해가 헷갈려서 질문드립니다.
이전의 6-6강 문자와 인코딩 규칙 강의중 "인코딩 규칙에 대한 모든 것" 유튜브 영상을 권해주셔서 보고 검색도 해보니
유니코드 문자중 한자와 한글은 UTF-8에서 3바이트로 변환된다는 것으로 정리가 되었고, 위와 같은 문자/문자열의 입출력시 JVM의 I/O 버퍼에서는 1바이트씩 3개 단위로 끊어서 들어가며, JVM 내부에서는 UTF-16BE로 저장 및 처리가 된다는 것으로 이해했습니다.
그런데 그렇다면 Modified UTF-8은 어떤 용도로 나온건가 싶어, GPT에 물어보고 해보니 아래 사진과 같은 상황에서는 UTF-8쓰고, 또 어떨때는 Modified UTF-8을 쓴다 하더군요

즉, Modified UTF-8 뿐만 아니라 UTF-8로도 인코딩 하는 것 같은데, 서론의 강의 내용처럼 "Modified UTF-8로 변경해 처리한다" 로만 이해해도 충분할까요?
말씀하신대로 핵심 내용은 "데이터의 입출력 과정에서 인코딩이 일어난다"는 내용인데, 이해의 과정에서 저 부분이 계속 헷갈려서 질문드립니다.
답변 2
1
네, 그 정도로도 충분할 것 같습니다. 내부가 그렇게 작동한다는 특성을 알고 있어야 어떤 특이 현상을 경험했을 때 문제를 해결하는 능력을 얻을 수 있으니까요. 😄
0
안녕하세요, 인프런 AI 인턴입니다. Kwon님, 질문에 대한 답변을 드리겠습니다.
Modified UTF-8은 주로 자바의 특정 환경에서 사용되는 인코딩 방식으로, 특히 자바의 Internal Representation에서 나타납니다. 즉, 자바는 많은 경우에 UTF-16BE를 사용하여 문자열을 메모리에 저장하고, 특정 상황(예: JVM 내부, JNI에서의 데이터 처리 등)에서는 Modified UTF-8로 변환하여 처리하게 됩니다.
기본적으로 자바에서 문자열은 메모리 내부적으로 UTF-16BE로 저장되지만, 자바의 다양한 시스템 구성 요소 간의 데이터 교환 시, Modified UTF-8이 사용될 수 있습니다. Modified UTF-8은 일반적인 UTF-8과는 다르게 null terminator와 같은 추가적인 호환성을 위해 약간의 수정이 있는 방식입니다. 이와 관련하여 요소들이 서로 데이터를 주고받을 때 이러한 인코딩이 사용됩니다.

위의 이미지에서 설명한 것처럼, JNI(Native Code)에서의 레거시 호환성 및 클래스 파일 내부 상수 등을 처리할 때 Modified UTF-8을 사용합니다. 반면, 일반 파일이나 네트워크 I/O에서는 국제적인 표준과의 호환성을 위해 일반 UTF-8을 사용하는 경우가 많습니다.
따라서, 강의에서 말한 “Modified UTF-8로 처리한다”라는 내용은 JVM 내부의 특정 처리 과정에서의 얘기라는 점을 염두해 두셔야 합니다. 따라서 모든 경우에 Modified UTF-8만 사용하는 것은 아니며, 상황에 따라 UTF-8과 번갈아가며 사용될 수 있습니다.
좀 더 세부적인 내용을 확인하고 싶다면, 관련 링크(문자를 다루는 인코딩 규칙에 대한 모든 것!)에서 추가 설명을 확인하실 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
질문있습니다
0
16
1
1번 문제 질문입니다.
0
22
1
26년 1회 실기 해설 강의
0
34
2
음악플레이어 문제 중 코드질문
0
16
1
잠겨버린 사물함 시간초과 관련 질문입니다.
0
16
1
도메인 모델에서 관계와 규칙을 구분하는 방법
0
29
2
프로젝트 질문 문의
0
33
1
문제와 풀이4 문제점
0
31
2
DDD 는 마이바티스와 잘 맞지 않는건가요?
0
38
1
스프링부트 버전 문의드립니다.
0
28
1
스크립트 논리곱 설명이 틀린것 같네요
0
55
2
버스요금 계산 실제 예제에 오탈자
0
81
2
"인스턴스" 용어에 대해 질문드립니다.
0
170
1
인스턴스 변수와 클래스 변수
1
125
2
식별자로 '$' 문자 사용
0
80
2
강의 내용에서 궁금한 부분이 있어 질문 드립니다:)
0
143
2
cmd 글꼴변경
0
208
2
[필수실습 12-3] *출력 놀이 응용 질문
0
145
2
c,c++로 만든 프로그램을 실행한 프로세스
0
172
2
javac.exe나 java.exe
0
201
1
강의 1분 20초 부분에 제가 이해한 것과 조금 달라 질문 남깁니다.
1
276
1
널널한 개발자님~ 변수명을 한글로 시도하지 말라고하셨는데요
0
508
1
[오류 검토 요청]
0
243
2
[오류 검토 요청]
0
225
2





