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
'programing' 카테고리의 다른 글
pip과 conda의 차이점은 무엇입니까? (0) | 2022.09.12 |
---|---|
커서 및 준비된 문장이 있는 절차:SQL 구문에 오류가 있습니다.EXECUTE stmt, DEALLOCATE PREAPE stmt, END L' 행이 34 입니다. (0) | 2022.09.05 |
CSS: 의사 요소를 제거하는 방법(후, 전, ...?) (0) | 2022.09.05 |
Javascript에서 문자열을 N자로 트리밍하는 방법은? (0) | 2022.09.05 |
시간 모듈을 사용하여 경과 시간 측정 (0) | 2022.09.05 |