본문 바로가기
[AWS]/AWS 기타

[MariaDB / MySQL] uft8 & utf8mb4 비교

by METAVERSE STORY 2022. 9. 28.
반응형
728x170

 

 

UTF-8이란 무엇인가?

UTF-8은 가장 많이 사용되는 가변 길이 유니코드 인코딩이다. 

코드 페이지는 65001로 UTF-8로 표현 가능한 최대 길이는 최대 6바이트지만 다른 인코딩과의 호환을 위해 4바이트까지만 사용한다. 

UTF-8은 전 세계 모든 글자들을 한꺼번에 표기할 수 있다. 영문/숫자/기호는 1byte 한글 한자 등은 3 byte로 표현한다. 

UTF-8은 가변 4바이트지만 전세계 모든 문자는 3바이트가 안되므로 공간, 속도적 효율을 위해서 uft-8은 가변 3바이트로 설계가 되어 있다. 

그래서 UTF-8의 별칭은 utf8mb3이다. 

 

 

utf8mb4란 무엇인가?

위에서 말했듯이 UTF-8은 공간, 시간적 효율을 위해 가변 3byte로 설계가 되어 있다. 

MySQL 5.5.3부터는 utf8mb4 문자 세트가 문자 당 최대 4바이트를 사용하여 일반 문자 뿐만 아니라 이모티콘과 같은 보조 문자를 지원한다. 

MariaDB 역시 5.5 버전부터는 utf8mb4를 지원한다. 

utf-8의 경우 이모지를 사용하면 문자가 깨져서 저장되는 이슈가 존재하므로 utf8mb4를 권장한다.

 

 

My SQL 문서에서는 이렇게 말한다. 

utf8[/utf8mb3]이라는 문자 집합은 문자당 최대 3바이트를 사용하며 BMP 문자만 포함합니다. MySQL 5.5.3부터 utf8mb4 문자 세트는 문자 당 최대 4 바이트를 사용하여 보조 문자를 지원합니다.

  • BMP 문자의 경우 utf8[/utf8mb3] 및 utf8mb4는 동일한 저장 특성(동일한 코드 값, 동일한 인코딩, 동일한 길이)을 갖습니다.
  • 보충 문자의 경우 utf8[/utf8mb3]은 문자를 전혀 저장할 수 없지만 utf8mb4는 문자를 저장하기 위해 4바이트가 필요합니다. utf8[/utf8mb3]은 문자를 전혀 저장할 수 없으므로 utf8[/utf8mb3] 열에 보조 문자가 없으며 이전 버전의 MySQL에서 utf8[/utf8mb3] 데이터를 업그레이드할 때 문자 변환 또는 데이터 손실에 대해 걱정할 필요가 없습니다.

 

 

 

출처

MySQL - MySQL에서 utf8mb4와 utf8 문자 집합의 차이점은 무엇입니까? - 스택 오버플로 (stackoverflow.com)

 

What is the difference between utf8mb4 and utf8 charsets in MySQL?

What is the difference between utf8mb4 and utf8 charsets in MySQL? I already know about ASCII, UTF-8, UTF-16 and UTF-32 encodings; but I'm curious to know whats the difference of utf8mb4 group of

stackoverflow.com

MariaDB/MySql 다국어 지원(utf8, utf8mb4) (tistory.com)

 

MariaDB/MySql 다국어 지원(utf8, utf8mb4)

MariaDB 에서 컬럼에 한국어 데이터를 저장 -> 다음과 같은 오류 발생 /* SQL 류 (1366): Incorrect string value: '\xEA\xB0\x80"}' for column `database`.`table`.`column` at row 1 */ 한국어 뿐 아니라 아시..

miin29na.tistory.com

 

반응형
그리드형

댓글