Programing

utf8_general_ci와 utf8_unicode_ci의 차이점은 무엇입니까?

crosscheck 2020. 9. 25. 07:28
반응형

utf8_general_ci와 utf8_unicode_ci의 차이점은 무엇입니까? [복제]


중복 가능성 :
utf8_general_ci와 utf8_unicode_ci의 차이점은 무엇입니까?

mysql 데이터베이스에 유망 해 보이는 유니 코드에 대한 두 가지 옵션이 있습니다.

utf8_general_ci unicode (multilingual), case-insensitive
utf8_unicode_ci unicode (multilingual), case-insensitive

utf8_general_ci와 utf8_unicode_ci의 차이점을 설명해 주시겠습니까? 데이터베이스를 설계 할 때 하나를 선택하면 어떤 효과가 있습니까?


utf8_general_ci이것은 매우 간단하고 유니 코드에서는 매우 깨진 데이터 정렬 로 일반 유니 코드 텍스트에 잘못된 결과 를 제공 합니다. 그것이하는 일은 :

  • 표준 분해를 위해 유니 코드 정규화 형식 D로 변환합니다.
  • 결합 문자를 제거합니다.
  • 대문자로 변환

유니 코드 대 / 소문자를 이해하지 못하기 때문에 유니 코드에서는 올바르게 작동하지 않습니다. 유니 코드 대 / 소문자만으로는 ASCII 방식이 처리 할 수있는 것보다 훨씬 더 복잡합니다. 예를 들면 :

  • “ẞ”의 소문자는“ß”이지만“ß”의 대문자는“SS”입니다.
  • 그리스어 소문자는 두 개 있지만 대문자는 하나만 있습니다. "Σίσυφος"를 고려하십시오.
  • "ø"와 같은 문자는 "o"와 분음 부호로 분해되지 않으므로 올바르게 정렬되지 않습니다.

다른 많은 미묘함이 있습니다.

  1. utf8_unicode_ci표준 Unicode Collation Algorithm을 사용 하며 확장 및 합자를 지원합니다. ".

utf8_general_ci 확장 / 연결을 지원하지 않으며 이러한 모든 문자를 단일 문자로 정렬하며 때로는 잘못된 순서로 정렬합니다.

  1. utf8_unicode_ci이다 일반적으로 보다 정확한 모든 스크립트. 예를 들어, 키릴 어 블록 : utf8_unicode_ci은 러시아어, 불가리아어, 벨로루시 어, 마케도니아 어, 세르비아어 및 우크라이나어와 같은 모든 언어에 적합합니다. utf8_general_ci는 키릴 자모의 러시아어 및 불가리아어 하위 집합에만 적합합니다. 벨로루시 어, 마케도니아 어, 세르비아어 및 우크라이나어에서 사용되는 추가 문자는 잘 정렬되지 않습니다.

의 비용은 utf8_unicode_ci그것이라는 것이다 약간 비트보다 느립니다 utf8_general_ci. 그러나 그것은 정확성을 위해 지불하는 대가입니다. 틀린 답이 빠르거나 옳은 답이 약간 느릴 수 있습니다. 당신의 선택. 잘못된 답을주는 것을 정당화하는 것은 매우 어렵 기 때문에 그것이 utf8_general_ci존재하지 않는다고 가정하고 항상를 사용하는 것이 가장 좋습니다 utf8_unicode_ci. 오답을 원하지 않는 한.

출처 : http://forums.mysql.com/read.php?103,187048,188748#msg-188748


에서 유니 코드 문자 집합 에서 MySQL의 문서 :

유니 코드 문자 집합의 경우 _general_ci데이터 정렬을 사용하여 수행되는 작업이 데이터 정렬보다 빠릅니다 _unicode_ci. 예를 들어 utf8_general_ci데이터 정렬에 대한 비교는에 대한 비교 보다 빠르지 만 약간 덜 정확합니다 utf8_unicode_ci. 그 이유는 utf8_unicode_ci확장과 같은 매핑 지원하기 때문입니다. 즉, 한 문자가 다른 문자의 조합과 동일한 것으로 비교할 때. 예를 들어, 독일어 및 일부 다른 언어에서“ ß”는 ”와 같습니다 ss. utf8_unicode_ci축약 및 무시할 수있는 문자도 지원합니다. utf8_general_ci확장, 축소 또는 무시할 수있는 문자를 지원하지 않는 레거시 데이터 정렬입니다. 문자간에 일대일 비교 만 할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/1036454/what-are-the-differences-between-utf8-general-ci-and-utf8-unicode-ci

반응형