유니코드(UTF-8, UTF-16, UTF-32)

BANGJH·2020년 9월 9일
0

> 국가별로 독자적인 문자열 인코딩을 사용하는 문제를 해결하기 위해 ISO에서 동일한 규칙으로 모든 언어를 표현할 수 있는 유니코드 문자 집합을 만들었다.

1. UTF-8

오늘날 가장 많이 사용하는 문자열 인코딩.
UTF-8은 8비트(1바이트)로 인코딩한다는 것을 의미한다.

  • 최소 1바이트, 최대 6바이트를 사용한다. 그러나 대부분 4바이트 내로 처리
  • 아스키 코드와 호환 가능
  • 윈도우, 자바, 임베디드를 제외한 거의 모든 환경에서의 문자열 처리 표준이다.
  • JSON은 UTF-8 인코딩만 사용하며, 다른 문자열 인코딩은 지원하지 않는다.

보통 일반적인 문자는 3바이트 내로 처리되며, 4바이트 영역에는 이모지(emoji)같은 문자가 있다.
고대 문자 같은 것을 사용하지 않는 한 5바이트 이상을 쓰는 경우는 거의 없다.


2. UTF-16

UTF-16은 16비트(2바이트)로 인코딩하는 것을 의미한다.
자바와 윈도우는 유니코드를 사용하기 전부터 고정된 2바이트 길이의 문자 집합을 사용했다.
그래서 UTF-16은 멀티 바이트라고도 한다.
두 환경에서의 호환성 외에 UTF-16을 사용할 이유는 없다.

  • 2바이트 또는 4바이트 길이의 문자열을 사용
  • 아스키 코드와 호환되지 않는다.
  • UTF-16 기반 환경에서 UTF-8을 사용할 때는 사용 영역을 명확히 구분하는게 좋다.

3. UTF-32

  • 4바이트를 고정적으로 사용
  • 반드시 UTF-32를 사용해야하는 환경이 아니라면 사용하지 않는다.

참고

  • MySQL의 UTF-8 타입에는 utf8과 utf8mb4가 있다.
    utf8은 3바이트까지 정상처리하나, 4바이트 영역 문자는 처리하지 못한다.
    따라서 UTF-8과 완벽히 호환되는 문자 집합을 쓰고 싶다면 utf8mb4를 써야 한다.

  • 국내에서 만든 서비스를 연동할 떄는 EUC-KR을 사용하는 경우가 있으니 주의해야한다.

profile
안녕하세요 신입 웹개발자입니다.

0개의 댓글