[REST API] 7. UTF-8

문정준's avatar
May 09, 2025
[REST API] 7. UTF-8

1. UTF-8

  • 사람이 이해할 수 있는 문자를 인코딩(encoding)하기 위한 국제 표준 : Unicode
notion image
 

2. 표준이 왜 필요한가?

  • 미국에서 최초로 데이터를 사람이 읽을 수 있는 언어로 변환하는 체계 구현 : ASCII
  • 한국의 경우는 기존에 완성형 코드를 사용함 (EUC-KR, 2Byte)
    • 이 케이스에 해당하지 않는 글자를 사용할 경우, 제대로 데이터를 읽을 수 없음
    • 한국에서 미국으로 데이터를 전송할 경우, 어떻게 데이터를 읽어야 하는 지에 대한 의문 발생
  • 일본, 중국의 경우도 완성형 코드를 사용함 (3Byte)
  • 각 나라마다 사용하는 언어의 용량이 전부 다르다 보니, 국제적인 표준이 필요
    • 따라서 생긴 것이 Unicode (UTF-8, Unicode Transform Format)
  • Unicode는 1 ~ 4바이트의 글자를 가변적으로 받아 동적으로 표현할 수 있음
    • 영어는 1바이트, 한글은 3바이트 등
    • Unicode는 조합형 : 한글의 경우 초성, 중성, 종성(받침)
notion image
 
notion image
notion image

3. Encoding 설정

  • 서버와 DB에서 데이터를 읽어올 때, 클라이언트에서 데이터를 받아서 처리할 때 등 데이터가 오가는 모든 곳에서는 인코딩 설정이 동일해야 함
    • 인코딩 방식이 동일해야 데이터를 항상 똑같은 방식으로 읽고 처리할 수 있음
    • 서버, DB, 로컬 서버, 클라이언트가 전부 동일한 인코딩 방식을 공유해야 함
    • 국제적 표준이 된 UTF-8을 따로 지정하지 않아도 OS 표준 인코딩 방식으로 채택하고 있음
      • Default 값이 UTF-8이나, 다른 인코딩 방식을 사용할 시 직접 지정해야 함
notion image
 

MySQL의 경우

  • 이모지를 제외한 1 ~ 3바이트까지만 받을 수 있는 UTF-8을 처음에 설계
  • 추후 4바이트까지 지원하는 UTF-8mb4를 추가 설계 ( = UTF-8 )
Share article

sxias