# 🎜 🎜#
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 인코딩 방법
데이터 인벤토리로 이동합니다. 레코드 하나:
@Test public void testInsert() { User user = new User(); user.setUsername("\uD83D\uDE00 "); user.setPassword("123456"); userRepo.save(user); }
로그인 후 복사
이것은 코드의 일부일 뿐이므로 이해하지 못해도 상관 없습니다. 이는 사용자 테이블에 레코드를 삽입하는 것입니다. 사용자 이름은 uD83DuDE00입니다.
사실 uD83DuDE00은 이모티콘 표현이에요.
MySQL의 utf8 문자 집합은 3바이트 UTF-8 인코딩 유니코드 범위만 지원하고 이모티콘 문자는 4바이트 인코딩에 속하기 때문입니다. 부분이므로 프로그램 실행 시 오류가 보고될 것으로 예상됩니다. 다음 코드를 실행하세요.
예상대로 오류가 보고됩니다.
문제 해결
MySQL의 UTF-8에 결함이 있지만 MySQL(mariadb 포함) 관계자는 이 버그를 수정하지 않고 2010년에 다시 출시된 "utf8mb4"를 채택했습니다. ” 진정한 UTF-8을 지원합니다. 따라서 이 문제를 해결하기 위한 유일한 방법은 MySQL 데이터베이스를 utf8mb4 문자 집합으로 설정하는 것입니다.
요약
이 문제도 데이터 저장시 이모티콘 표현이 저장되어 있어서 발견되었습니다. 사실 처음 MySQL을 사용하기 시작했을 때 utf8mb4를 발견했지만 UTF8과 UTF8MB4의 차이점을 이해하지 못했습니다. 이 강의를 마친 후 앞으로 MySQL을 사용할 때는 문자 집합을 utf8mb4로 정직하게 설정하세요.
더 많은 MySQL 관련 기술 기사를 보려면 MySQL 튜토리얼 열을 방문하세요. 배우다 !
위 내용은 MySQL에서 UTF-8 인코딩을 사용하지 않는 이유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!