인코딩(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
      • 실무 이야기
  • 블로그 메뉴

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

    • 깃허브
  • 공지사항

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

  • 태그

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

  • 최근 글

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

티스토리툴바