>  기사  >  데이터 베이스  >  MySQL에서 UTF-8 인코딩을 사용하지 않는 이유

MySQL에서 UTF-8 인코딩을 사용하지 않는 이유

步履不停
步履不停원래의
2019-06-19 14:01:042426검색

MySQL에서 UTF-8 인코딩을 사용하지 않는 이유

# 🎜 🎜#

MySQL의 UTF-8 인코딩 방법

MySQL은 버전 4.1, 즉 2003년부터 UTF-8을 지원했습니다. 그러나 현재 널리 사용되는 UTF-8 표준(RFC 3629)은 이후에 규정합니다. 이로 인해 MySQL의 UTF-8은 일상적인 개발에서 UTF-8과 일치하지 않아 몇 가지 문제가 발생했습니다. MySQL의 UTF-8은 문자당 최대 3바이트만 지원하는 반면, 실제 UTF-8은 문자당 최대 4바이트를 지원합니다.

문제의 재발

데이터베이스 테이블은 다음과 같습니다: utf8 인코딩 방법

下载 (2).jpg

데이터 인벤토리로 이동합니다. 레코드 하나:

@Test public void testInsert() {     User user = new User();     user.setUsername("\uD83D\uDE00 ");     user.setPassword("123456");     userRepo.save(user); }
이것은 코드의 일부일 뿐이므로 이해하지 못해도 상관 없습니다. 이는 사용자 테이블에 레코드를 삽입하는 것입니다. 사용자 이름은 uD83DuDE00입니다.

사실 uD83DuDE00은 이모티콘 표현이에요.

MySQL에서 UTF-8 인코딩을 사용하지 않는 이유

MySQL의 utf8 문자 집합은 3바이트 UTF-8 인코딩 유니코드 범위만 지원하고 이모티콘 문자는 4바이트 인코딩에 속하기 때문입니다. 부분이므로 프로그램 실행 시 오류가 보고될 것으로 예상됩니다. 다음 코드를 실행하세요.

MySQL에서 UTF-8 인코딩을 사용하지 않는 이유

예상대로 오류가 보고됩니다.

문제 해결

MySQL의 UTF-8에 결함이 있지만 MySQL(mariadb 포함) 관계자는 이 버그를 수정하지 않고 2010년에 다시 출시된 "utf8mb4"를 채택했습니다. ” 진정한 UTF-8을 지원합니다. 따라서 이 문제를 해결하기 위한 유일한 방법은 MySQL 데이터베이스를 utf8mb4 문자 집합으로 설정하는 것입니다.

요약

이 문제도 데이터 저장시 이모티콘 표현이 저장되어 있어서 발견되었습니다. 사실 처음 MySQL을 사용하기 시작했을 때 utf8mb4를 발견했지만 UTF8과 UTF8MB4의 차이점을 이해하지 못했습니다. 이 강의를 마친 후 앞으로 MySQL을 사용할 때는 문자 집합을 utf8mb4로 정직하게 설정하세요.

더 많은 MySQL 관련 기술 기사를 보려면 MySQL 튜토리얼 열을 방문하세요. 배우다 !

위 내용은 MySQL에서 UTF-8 인코딩을 사용하지 않는 이유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.