개념 사전 · 개념
Unicode와 UTF-8
유니코드 · Unicode · UTF-8
는 문자에 를 부여하는 체계이고 은 이를 바이트열로 표현하는 인코딩 방식이다. 문자 번호·화면의 글자· 수·전송 바이트 수를 구별해야 파일과 네트워크에서 길이·경계 오류를 피할 수 있다.
밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.
01무엇이고, 어떤 일을 하나
- 문자와 숫자 사이의 공통 식별 체계를 제공한다.
- 텍스트를 저장·전송 가능한 바이트열로 변환한다.
- ·오류 정책·스트림 경계를 통해 일관된 문자 해석을 돕는다.
02어떤 순서로 동작하나
- 문자열 구성
프로그램이 의 문자열을 다룬다. 화면의 한 글자가 여러 코드 포인트일 수도 있다.
- 인코딩
선택한 codec이 각 를 바이트 패턴으로 표현한다.
- 전송·저장
바이트열을 파일·소켓에 기록한다. 임의 I/O 조각의 끝은 다중 바이트 문자의 끝과 일치하지 않을 수 있다.
- 디코딩
수신자가 같은 규칙으로 바이트를 해독하고 불완전·잘못된 입력을 명시한 오류 정책으로 처리한다.
03먼저 알아둘 용어와 구성요소
- ASCII는 영문자·숫자·제어문자 등에 0~127의 값을 배정한 문자 코드이다. 는 더 넓은 문자 집합에 를 부여한다. 예를 들어 A는 U+0041, 가는 U+AC00이다. 은 의 유효한 스칼라 값을 1~4바이트로 옮기는 인코딩 규칙이다. 을 동의어로 쓰면 “문자의 번호”와 “저장한 바이트”를 혼동하게 된다.
- 의 chr()/ord()는 와 문자를 변환한다. ord("가")는 44032이고 chr(44032)는 "가"이다. 이 정수 44032를 십진 문자열로 전송한 결과와, 글자 가를 로 인코딩한 결과는 서로 다르다.
- 에서 U+AC00의 비트 1010 1100 0000 0000을 3바이트 틀 1110xxxx 10xxxxxx 10xxxxxx에 채우면 11101010 10110000 10000000, 즉 EA B0 80이 된다. ASCII 범위의 A는 41 한 바이트다. 문자열 길이 1과 전송 길이 3을 구분해야 파일 위치·요청 길이·버퍼 크기를 올바르게 계산한다.
- 프로그램 내부의 str을 파일·소켓으로 내보낼 때 encode, 바이트를 읽어 str로 해석할 때 decode가 필요하다. 송신자가 로 기록한 바이트를 수신자가 다른 문자표로 해석하면 글자가 깨지거나 오류가 난다. bytes를 str(raw)로 바꾸면 원문 해독 대신 b'...' 형태의 표현 문자열을 얻으므로 decode와 같지 않다.
- é는 U+00E9 하나 또는 e와 U+0301의 조합으로 표현될 수 있다. 같은 모양이어도 수· 바이트열·해시가 다를 수 있다.
- 검색·식별자의 비교 규칙에 맞춰 NFC 등의 를 정한다. 원본 바이트를 검증하는 서명·해시는 전후 어느 데이터를 대상으로 하는지 명시한다.
04예제로 따라가기
- '가A'는 두 개지만 바이트는 EA B0 80 41의 네 개이므로 문자 길이를 Content-Length로 그대로 사용하면 안 된다.
- 한글의 바이트 중간에서 네트워크 조각이 끝나면 나머지를 받은 뒤 해독해야 할 수 있어 조각마다 독립 decode하면 오류가 날 수 있다.
- 겉모양이 같은 문자가 서로 다른 조합으로 표현될 수 있어 식별자 비교의 규칙을 계약으로 정한다.
05혼동하기 쉬운 점과 확인 기준
- errors="ignore"로 오류를 숨기면 바이트가 사라진 사실을 모른 채 로그를 분석할 수 있다. 조사용 원본 바이트는 보관하고, 화면 표시용 대체 문자와 원본을 구분한다. HTTP·HTML·메일의 문자셋 표기와 실제 바이트도 일치해야 한다.
- errors=ignore는 문제 바이트를 없애고 replace는 대체 문자를 넣는다. 복구가 목적일 수는 있지만 원본 보존·동일성 검증과 같은 작업은 아니다.
- 프록시·웹 서버·애플리케이션이 서로 다른 횟수로 URL 해독을 하면 검사한 값과 사용하는 값이 달라질 수 있다. 각 경계의 실제 표현을 비교한다.
06상세 노트 · 실습 자료
헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.
공식 문서 · 표준
기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.