1. 인코딩이란
인코딩이란 사람이나 컴퓨터가 이해할 수 있는 형태로 정보를 변환하는 것이다.
문자 인코딩 정의와 단계
- 컴퓨터는 문자 그대로를 이해하지 못한다. 숫자(이진수)로만 이해할 수 있다.
- 그래서 문자를 숫자로 바꾸는 규칙이 필요한데, 이를 문자 인코딩이라고한다.
- 문자 선택
- 예: 사용자가 “A”를 입력.
- 문자표(Character Set)에서 코드값 찾기
- 각 문자에는 고유한 번호가 있음.
- 예: ASCII 표에서 A = 65
- 이진수 변환
- 65(10진수) → 01000001(2진수)
- 저장 또는 전송
- 파일이나 네트워크를 통해 01000001이 전송됨.
- 복호화(Decoding)
- 받는 쪽에서 같은 문자표를 이용해 01000001 → “A”로 변환
네트워크 인코딩 정의와 단계
인터넷으로 데이터를 주고 받을 때 글자나 파일을 전송 가능한 형태(ex: Base64)로 바꾸는 것도 인코딩이다.
Base64
- Base64는 이진 데이터를 ASCII 텍스트 형식으로 변환해 준다.
- 이 방식은 텍스트만 처리할 수 있는 시스템에서 이진 데이터를 안전하게 전송할 수 있게 해준다.
- 예를 들어, 이메일 시스템은 일반적으로 텍스트 데이터를 주고받기 때문에 이미지를 이메일로 보내기 위해서는 Base64로 인코딩해야 한다.
디코딩은 변환된 데이터를 원래 형태로 되돌리는 과정을 의미한다.
2. 인코딩이 필요한 이유
- 컴퓨터와 소통하기 위함
- 컴퓨터는 전기 신호, 0과 1인 이진수로만 데이터를 처리할 수 있다.
- 그러나 사람들이 사용하는 건 글자, 이미지, 소리 같은 인간 친화적인 정보다.
- 그래서 이걸 컴퓨터가 읽을 수 있게 숫자나 코드로 변환(인코딩) 해야 한다.
- 호환성과 일관성을 유지하기 위함
- 세상에는 다양한 시스템이 존재하면서 각각 데이터 처리 방식이 다를 수 있다.
- 인코딩 규칙을 정하면 모든 시스템이 같은 데이터를 똑같이 이해할 수 있다.
- 일종의 표준 규격을 정한 것
3. 인코딩 형식과 수많은 형식이 존재하는 이유
컴퓨터가 처음 만들어졌을 때는 미국, 영어권에서 주로 사용했다.
그래서 초기에 만든 인코딩 표준은 영어 알파벳만 표현할 수 있었다.
예를 들어 ASCII 는 A~Z, 숫자, 기호 등 128개 문자만 표현이 가능하다.
한자와 한글, 일본어 등은 표현이 불가능하다.
이후 전 세계 사람들이 컴퓨터를 쓰기 시작하면서 문제가 생겼는데,
영어가 아닌 다른 언어는 ASCII로는 표현이 불가능했기 때문이다.
따라서 나라별로 자기 언어를 표현하기 위해 독자적인 인코딩 형식을 만들기 시작했다.
| 한국 | EUC-KR, CP949 |
| 일본 | Shift_JIS |
| 중국 | GB2312, GBK |
| 전세계 공용 | UTF-8 |
여기서 문제가 발생하는데, 서로 다른 인코딩을 쓰면 같은 문자가 다른 문자로 저장돼서 글자 깨짐 현상이 발생한다.
이를 해결하기 위해 모든 나라의 문자를 하나로 통합 코드로 표현하는 표준인 유니코드(Unicode) 가 등장했다.
그리고 유니코드를 실제로 저장하는 방식이 여러 가지인데,
그게 바로 UTF-8, UTF-16, UTF-32 같은 유니코드 인코딩 형식이다.
| 인코딩 형식 | 장점 | 단점 | 주 사용처 |
| ASCII | 단순, 작음 | 영어만 가능 | 초기 시스템 |
| EUC-KR | 한글 지원 | 다른 언어 깨짐 | 옛날 윈도우 |
| UTF-8 | 전 세계 언어 호환 | 일부 문자 크기 커짐 | 웹, 현대 시스템 |
| UTF-16 | 고정 길이(일부) | 저장공간 큼 | 윈도우 내부, 모바일 |
| UTF-32 | 단순 구조 | 공간 낭비 심함 | 특수 시스템 |
즉, “모든 문자 표현” vs “저장 효율” 사이의 트레이드오프 때문에 서로 다른 인코딩 형식이 계속 생겨났다.
댓글