programing

MariaDB/MySQL에서 utf8mb4_unicode_ci와 utf8mb4_unicode_520_ci 조합의 차이는 무엇입니까?

sourcetip 2022. 9. 5. 23:40
반응형

MariaDB/MySQL에서 utf8mb4_unicode_ci와 utf8mb4_unicode_520_ci 조합의 차이는 무엇입니까?

MariaDB/MySQL에 로그인하여 다음과 같이 입력했습니다.

SHOW COLLATION;

, 그렇군요.utf8mb4_unicode_ci ★★★★★★★★★★★★★★★★★」utf8mb4_unicode_520_ci가능한 대조 자료 중에서요.이 두 가지 대조는 어떤 차이가 있으며 어떤 것을 사용해야 합니까?

설명서의 차이점을 읽어보실 수 있습니다.프로젝트마다 다르기 때문에 어떤 것을 사용해야 하는지 말씀드릴 수 없습니다.

10.1.3 대조 명명 규칙

MySQL 대조명은 다음 표기법을 따릅니다.

대조명은 관련지어져 있는 문자 세트의 이름으로 시작하고, 그 다음에 다른 대조 특성을 나타내는1개 이상의 접미사가 붙습니다.예를 들어 utf8_general_ci와 latin_swedish_ci는 각각 utf8 문자 집합과 latin1 문자 집합의 조합입니다.

언어 고유의 대조는 언어명을 포함한다.예를 들어 터키어와 헝가리의 규칙을 사용하여 utf8_turkish_ci 및 utf8_hungari_ci 문자를 정렬합니다.

정렬의 대소문자는 _ci(대문자와 소문자가 구분되지 않음), _cs(대문자와 소문자가 구분됨) 또는 _bin(문자 비교는 문자 바이너리 코드 값을 기반으로 함)으로 표시됩니다.예를 들어 latin1_general_ci는 대소문자를 구분하지 않고 latin1_general_cs는 대소문자를 구분하며 latin1_bin은 이진 코드 값을 사용합니다.

Unicode의 경우 조합명은 조합의 기반이 되는 Unicode Collation Algorithm(UCA; 유니코드 조합 알고리즘)의 버전을 나타내는 버전 번호를 포함할 수 있습니다.이름에 버전 번호가 없는 UCA 기반 대조에서는 버전 4.0.0 UCA 무게 키를 사용합니다.예를 들어 다음과 같습니다.

utf8_beight_ci(버전명 없음)는 UCA 4.0.0 웨이트키>(http://www.unicode.org/Public/UCA/4.0.0/allkeys-4.0.0.txt))에 근거하고 있습니다.

utf8_module_module_ci는 UCA 5.2.0 웨이트키(http://www.unicode.org/Public/UCA/5.2.0/allkeys.txt)를 기반으로 합니다.

Unicode의 경우 xxx_general_mysql500_ci 조합은 원래 xxx_general_ci 조합의 5.1.24 이전 순서를 유지하고 MySQL 5.1.24 이전에 작성된 테이블에 대한 업그레이드를 허용합니다.자세한 내용은 섹션 2.11.3 "테이블 또는 인덱스 재구축 여부 확인" 및 섹션 2.11.4 "테이블 또는 인덱스 재구축 또는 복구"를 참조하십시오.

원천

@StuiterSlurf 답변을 개발하여 자세한 내용에 초점을 맞춥니다.utf8mb4_unicode_ci/utf8mb4_unicode_520_ci:

여기읽을 수 있듯이(Peter Gulutzan) 폴리시 문자 "W"(L과 스트로크)의 정렬/비교에는 문제가 있습니다(소문자: "w"; html esc:ł그리고.Ł) - 코딩에는 다음과 같은 전제 조건이 있습니다(와 동일).mb4):

utf8_polish_ci      Ł greater than L and less than M
utf8_unicode_ci     Ł greater than L and less than M
utf8_unicode_520_ci Ł equal to L
utf8_general_ci     Ł greater than Z

폴란드어에서 문자 is는 문자 L 뒤에 있고 M 앞에 있다.또한 코딩 시스템에 따라 다른 정렬 결과를 얻을 수 있습니다.이 코드 중 어느 것도 좋고 나쁨은 없습니다.필요에 따라 다릅니다.

실제 차이에 대한 자세한 내용을 보려면 https://dev.mysql.com/worklog/task/?id=2673을 방문하여 "개요 아키텍처"를 클릭하십시오.

http://mysql.rjweb.org/utf8mb4_collations.html 에서는 이들 2개의 대조와 기타 많은 대조 간의 차이를 보여 줍니다.

Unicode는 다음과 같은 숫자로 발전하는 표준을 제공합니다.

4.0.0 - utf8mb4_unicode_ci
5.2.0 - utf8mb4_unicode_520_ci
9.0.0 - utf8mb4_0900_ai_ci

일반적으로 이용 가능한 최신 표준을 사용하는 것이 좋습니다.

예를 들어 이 페이지에는

utf8mb4_unicode_ci: 
 A=a=ª=À=Á=Â=Ã=Ä=Å=à=á=â=ã=ä=å=Ā=ā=Ă=ă=Ą=ą  Aa  ae     az  Æ=æ
utf8mb4_unicode_520_ci and utf8mb4_0900_ai_ci:
 A=a=ª=À=Á=Â=Ã=Ä=Å=à=á=â=ã=ä=å=Ā=ā=Ă=ă=Ą=ą  Aa  ae=Æ=æ az

이는 "A"와의 한 가지 차이, 즉 "e"는 "az" 뒤에 오지만 5.2.0 및 9.0.0에서는 "ae"와 동등하게 취급된다.

이 조합들 중에서 악센트가 들어간 글자가 바뀐 것은 'e'뿐일 것이다.심지어 """도 "oe"와 일관되게 같았습니다.

언급URL : https://stackoverflow.com/questions/37307146/difference-between-utf8mb4-unicode-ci-and-utf8mb4-unicode-520-ci-collations-in-m

반응형