인코딩(Encoding) 이란

2025. 10. 26. 21:26·OS
반응형

 

1. 인코딩이란

 

인코딩이란 사람이나 컴퓨터가 이해할 수 있는 형태로 정보를 변환하는 것이다.

 

문자 인코딩 정의와 단계

 

  • 컴퓨터는 문자 그대로를 이해하지 못한다. 숫자(이진수)로만 이해할 수 있다.
  • 그래서 문자를 숫자로 바꾸는 규칙이 필요한데, 이를 문자 인코딩이라고한다.

 

  1. 문자 선택
    • 예: 사용자가 “A”를 입력.
  2. 문자표(Character Set)에서 코드값 찾기
    • 각 문자에는 고유한 번호가 있음.
    • 예: ASCII 표에서 A = 65
  3. 이진수 변환
    • 65(10진수) → 01000001(2진수)
  4. 저장 또는 전송
    • 파일이나 네트워크를 통해 01000001이 전송됨.
  5. 복호화(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 “저장 효율” 사이의 트레이드오프 때문에 서로 다른 인코딩 형식이 계속 생겨났다.

반응형
'OS' 카테고리의 다른 글
  • Ubuntu 22.04 LTS WOL(Wake On Lan) 적용하기
  • 윈도우 밀고 ubuntu 24.04 LTS 설치 도전!
  • 인터럽트
  • 컴퓨터 성능 향상 기술
Debin
Debin
공부 기록을 남기며 게시글 리팩토링을 진행하는 블로그입니다.
  • Debin
    리팩토링하는 블로그
    Debin
  • 전체
    오늘
    어제
    • 분류 전체보기
      • DB
        • DB 기초
        • MySQL
        • SQL 튜닝
      • OS
      • Network
      • Git
      • 디지털콘텐츠기획
      • 소프트웨어공학
      • 코딩테스트
        • 프로그래머스
        • 백준
        • 인프런
      • 공부 일지
      • 독서
        • 클린코드
        • 일상 속 사물이 알려주는 웹 API 디자인
        • 토비의 스프링
        • 객체지향의 사실과 오해
        • 자바 잘 읽는 법
      • 기록 및 회고
      • Cloud
        • AWS
      • 개발
        • Java
        • Spring Core
        • Spring MVC
        • Spring DB
        • Spring Boot
        • Spring Security
        • Spring Batch
        • JPA
        • Test
        • Android
      • 대외활동
        • UMC SERVER
        • 카엔프 SW 아카데미
      • 프로젝트
      • Docker
      • Gradle
      • ELK
      • 실무 이야기
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

    • 본인 깃허브입니다!
  • 인기 글

  • 태그

    도커
    코딩 #개발자 #노마드북클럽 #노개북
    docker
    test
    스프링 부트
    innodb
    mysql
    컨테이너
    AWS
    spring
    container
    Java
    스프링
    인덱스
    redis
    프록시
    spring mvc
    운영체제
    JPA
    ORM
    리눅스
    트랜잭션
    객체지향
    SQL
    객체
    자바
    데이터베이스
    토비의 스프링
    AOP
    spring boot
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
Debin
인코딩(Encoding) 이란
상단으로

티스토리툴바