티스토리 뷰
인코딩은 데이터를 특정 형식으로 변환하여 저장하거나 전송할 수 있도록 만드는 과정입니다.
텍스트, 이미지, 영상 등 모든 데이터는 컴퓨터 내부에서 숫자로 저장되므로, 서로 다른 시스템에서도 데이터를 올바르게 읽고 쓸 수 있도록 변환하는 과정이 필요합니다.
주요 목적
- 데이터 호환성 유지 -> 서로 다른 시스템에서도 같은 데이터를 읽을 수 있도록 변환
- 전송 및 저장 최적화 -> 네트워크 전송 시 데이터 손실 방지
- 특정 환경에서 올바르게 표시 -> 문자 깨짐 방지
주요 인코딩 방식
| 인코딩 방식 | 설명 | 예시 |
|---|---|---|
| UTF-8, ASCII | 텍스트 데이터를 숫자로 변환 | UTF-8, ASCII, EUC-KR |
| Base64 | 바이너리 데이터를 ASCII 문자로 변환 | 이메일 첨부파일, JSON, 이미지 데이터 URI |
| URL Encoding | URL에 포함할 수 없는 문자(공백, 특수문자)를 변환 | 웹 주소(URL), HTTP 요청 |
| 파일 인코딩 | 오디오, 동영상, 이미지 등 미디어 파일을 특정 포맷으로 변환 | MP3, JPEG, MP4 |
1. 문자 인코딩
컴퓨터는 문자를 직접 이해할 수 없기 때문에 문자를 숫자로 변환해야 합니다.
이를 위해 문자 인코딩 방식을 사용하며 대표적으로 ASCII, UTF-8, UTF-16 등이 있습니다.
a. ASCII(American Standard Code Information Interchange)
- 영어(알파벳), 숫자, 특수문자만 표현 가능(총 128개)
- 각 문자를 7비트(0~127) 숫자로 변환
- 예제: "A" -> 65(10진수) -> 01000001(2진수)
- 단점: 한글, 중국어, 이모지 등 다국어 지원 불가
ASCII 코드 예시
console.log("A".charCodeAt(0)); // 65
console.log(String.fromCharCode(65)); // "A"
b. UTF-8(Unicode Transformation Format - 8-bit)
- 전 세계 모든 문자를 표현할 수 있는 인코딩 방식
- ASCII와 호환 가능
- 현재 웹에서 가장 많이 사용되는 문자 인코딩 방식
UTF-8 변환 예시
const utf8Bytes = new TextEncoder().encode("안녕");
console.log(utf8Bytes);
// 출력: Uint8Array(6) [ 236, 149, 136, 235, 133, 149 ]
c. UTF-16
- 모든 문자를 2바이트(16비트) 또는 4바이트(32비트)로 인코딩
- 이모지 같은 특수 문자를 더 잘 표현 가능
- UTF-8보다 파일 크기가 클 수 있음
UTF-16 변환 예시
const utf16Bytes = new TextEncoder("utf-16").encode("Hello");
console.log(utf16Bytes);
// 출력: Uint8Array(12) [ 255, 254, 72, 0, 101, 0, 108, 0, 108, 0, 111, 0 ]
2. Base64 인코딩
바이너리 데이터를 텍스트(ASCII 코드)로 변환하는 방식 입니다. ASCII 코드 중 하위 문자들로만 변경됩니다.

Base64 인코딩 예시
const text = "Hello, World!";
const base64Encoded = btoa(text);
console.log(base64Encoded); // "SGVsbG8sIFdvcmxkIQ=="
const base64Decoded = atob(base64Encoded);
console.log(base64Decoded); // "Hello, World!"
3. URL 인코딩
URL에 포함할 수 없는 특수문자나 공백을 안전하게 변환하는 방식입니다.
URL에는 ASCII 문자(영어, 숫자, 일부 특수 문자)만 허용됩니다.
한글, 공백, &, ?, / 등의 문자들은 URL에서 정상적으로 동작하지 않을 수 있으므로 변환이 필요합니다.
URL 인코딩 예시
const url = "https://example.com?q=hello world!";
const encodedUrl = encodeURIComponent(url);
console.log(encodedUrl);
// 출력: "https%3A%2F%2Fexample.com%3Fq%3Dhello%20world%21"
const decodedUrl = decodeURIComponent(encodedUrl);
console.log(decodedUrl);
// 출력: "https://example.com?q=hello world!"
4. 파일 인코딩
음악, 영상, 이미지 등의 파일을 특정 포맷으로 변환하는 방식입니다.
파일 크기를 줄이거나 특정 장치에서 재생할 수 있도록 변환합니다.
| 파일 유형 | 대표적인 인코딩 방식 |
| 이미지 | JPEG, PNG, GIF, WebP |
| 오디오 | MP3, AAC, FLAC, WAV |
| 비디오 | MP4, H.264, HEVC, VP9 |
