> 백엔드 개발 > PHP 문제 > 간단하고 명확합니다! utf8과 utf8mb4의 차이점

간단하고 명확합니다! utf8과 utf8mb4의 차이점

silencement
풀어 주다: 2023-02-28 18:10:01
앞으로
5530명이 탐색했습니다.

간단하고 명확합니다! utf8과 utf8mb4의 차이점

1. 소개

MySQL은 5.5.3 이후에 utf8mb4 인코딩을 추가했습니다. mb4는 대부분의 바이트 4를 의미하며, 이는 4바이트 유니코드와 호환되도록 특별히 설계되었습니다. utf8mb4는 utf8

의 상위 집합이며 인코딩을 utf8mb4로 변경하는 것 외에는 다른 변환이 필요하지 않습니다. 물론 공간을 절약하려면 일반적으로 utf8을 사용하는 것으로 충분합니다.

2. 내용 설명

위에서 언급했듯이 utf8은 대부분의 한자를 저장할 수 있는데 왜 utf8mb4를 사용해야 할까요? mysql에서 지원하는 최대 문자 길이는 3바이트입니다. 와이드 문자는 예외를 삽입합니다. 3바이트 UTF-8로 인코딩할 수 있는 최대 유니코드 문자는 0xffff이며, 이는 유니코드의 BMP(Basic Multilingual Plane)입니다. 즉, 기본 다중 텍스트 평면에 없는 유니코드 문자는 Mysql의 utf8 문자 세트를 사용하여 저장할 수 없습니다. 이모티콘 표현(Emoji

은 iOS 및 Android 휴대폰에서 일반적으로 사용되는 특수 유니코드 인코딩입니다), 흔하지 않은 많은 중국어 문자, 새로운 유니코드 문자 등(utf8

의 단점)을 포함합니다.

보통 컴퓨터는 문자를 저장할 때 문자 종류와 인코딩 방식에 따라 저장 공간을 할당합니다. 예를 들어, 다음과 같은 인코딩 방법이 있습니다.

① ASCII 인코딩에서는 영문자 1개(대소문자 상관없음)가 1바이트의 공백을 차지하고, 한자 1개가 2바이트의 공백을 차지합니다. 이진수 시퀀스는 컴퓨터에 디지털 단위로 저장될 때 일반적으로 8비트 이진수이며 십진수로 변환됩니다. 최소값은 0이고 최대값은 255입니다.
②UTF-8 인코딩에서는 영문자 1자가 1바이트의 저장공간을 차지하고, 한자(번체자 포함)는 3바이트의 저장공간을 차지합니다.

3유니코드 인코딩에서는 영문자는 2바이트의 저장공간을 차지하고, 한자(번체자 포함)는 2바이트의 저장공간을 차지합니다.

4UTF-16 인코딩에서는 영문자나 한자를 저장하는데 2바이트의 저장공간이 필요합니다(유니코드 확장 영역의 일부 한자는 저장하는데 4바이트가 필요합니다).

⑤UTF-32 인코딩에서는 전 세계 모든 문자를 저장하려면 4바이트의 저장 공간이 필요합니다.

utf8은 대부분의 문자와 호환되는데 utf8mb4를 확장하는 이유는 무엇입니까?

인터넷의 발달로 우리가 채팅할 때 일반적으로 보내는 작은 노란색 얼굴 표정인 이모티콘 기호 등 새로운 유형의 캐릭터가 많이 생산되었습니다. basic multi-plane 유니코드 문자 중 MySQL에서는 utf8 저장소를 사용하는 것이 불가능했기 때문에 MySQL에서는 utf8 문자를 확장하고 utf8mb4 인코딩을 추가했습니다.

그래서 사용자가 데이터베이스를 설계할 때 특수 기호를 사용할 수 있도록 하려면 저장에 utf8mb4 인코딩을 사용하여 데이터베이스의 호환성을 높이는 것이 가장 좋지만 이 설계는

저장 공간을 더 많이 소모하게 됩니다. .

위 내용은 간단하고 명확합니다! utf8과 utf8mb4의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:www.liqingbo.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿