문제

나는 그것을 읽을 수있다 MySQL 문서화와 분명합니다. 그러나 어떤 문자를 사용할 것인지 어떻게 결정합니까? Collation은 어떤 데이터에 영향을 미칩니 까?

나는 두 사람에 대한 설명과 그것을 선택하는 방법을 요구합니다.

도움이 되었습니까?

해결책

MySQL에서 문서:

캐릭터 세트 기호와 인코딩 세트입니다. ㅏ 대조 문자 세트에서 문자를 비교하기위한 일련의 규칙입니다. 가상의 캐릭터 세트의 예로 구별을 명확하게하자.

'a', 'b', 'a', 'b'의 네 글자가있는 알파벳이 있다고 가정 해 봅시다. 각 글자를 숫자로 제공합니다. 'a'= 0, 'b'= 1, 'a'= 2, 'b'= 3. 4 글자와 인코딩의 조합은 문자 세트입니다.

이제 'A'와 'B'라는 두 개의 문자열 값을 비교하고 싶다고 가정 해 봅시다. 이를 수행하는 가장 간단한 방법은 인코딩을 보는 것입니다. 'A'의 경우 0, 'B'의 경우 1입니다. 0은 1보다 작기 때문에 'a'는 'b'보다 작습니다. 이제 방금 한 것은 캐릭터 세트에 Collation을 적용하는 것입니다. Collation은 일련의 규칙입니다 (이 경우 하나의 규칙 만) : "인코딩 비교". 우리는 이것을 가능한 모든 콜라주 중에서 가장 간단하게 부신 콜레이션이라고 부릅니다.

그러나 우리가 소문자와 대문자가 동등하다고 말하고 싶다면 어떻게해야합니까? 그런 다음 우리는 적어도 두 가지 규칙을 가질 것입니다. (1) 소문자 'a'와 'b'를 'a'및 'b'와 동등한 것으로 취급하십시오. (2) 그런 다음 인코딩을 비교하십시오. 우리는 이것을 사례에 민감한 협업이라고 부릅니다. 이진 콜레이션보다 조금 더 복잡합니다.

실제로 대부분의 캐릭터 세트에는 'A'와 'B'뿐만 아니라 전체 알파벳, 때로는 여러 개의 알파벳 또는 동부 작문 시스템과 많은 특수 상징과 구두점 마크가 있습니다. 또한 실제 생활에서 대부분의 콜라이트는 많은 규칙을 가지고 있습니다. 사례 무감각뿐만 아니라 악센트 무감각 ( "악센트"는 독일의 'Ö'에서와 같이 캐릭터에 첨부 된 마크입니다) 및 다중 특성 매핑 (규칙과 같은 '). 두 개의 독일 콜라이트 중 하나에서 Ö '='oe ').

다른 팁

캐릭터 인코딩 메모리에 맞도록 문자를 인코딩하는 방법입니다. 즉, 숯이 ISO-8859-15 인 경우 유로 기호 €는 0xA4로 인코딩되고 UTF-8에서는 0xE282AC가됩니다.

그만큼 대조 문자를 비교하는 방법, latin9에는 다음과 같은 문자가 있습니다. e é è ê f, 이진 표현으로 정렬하면 e f é ê è 그러나 예를 들어 프랑스어로 구성되면, 당신이 생각했던 순서대로 가질 것입니다. e é è ê 그런 다음 동일합니다 f.

캐릭터 세트는 모든 서면 글리프의 하위 집합입니다. 문자 인코딩은 해당 문자가 숫자 값에 매핑되는 방법을 지정합니다. UTF-8 및 UTF-16과 같은 일부 캐릭터 인코딩은 범용 문자 세트의 문자를 인코딩 할 수 있습니다. US-ASCII 또는 ISO-8859-1과 같은 다른 사람들은 각각 문자 당 7 및 8 비트를 사용하기 때문에 작은 서브 세트 만 인코딩 할 수 있습니다. 많은 표준이 문자 세트와 캐릭터 인코딩을 모두 지정하기 때문에 "문자 세트"라는 용어는 종종 "문자 인코딩"으로 자유롭게 대체됩니다.

Collation은 문자를 정렬과 비교할 수있는 방법을 지정하는 규칙으로 구성됩니다. Collations 규칙은 Locale 특이적일 수 있습니다. 두 문자의 올바른 순서는 언어마다 다릅니다.

캐릭터 세트와 콜라이트를 선택하는 것은 응용 프로그램이 국제화되었는지 여부에 따라 나옵니다. 그렇지 않다면 어떤 로케일을 목표로하고 있습니까?

지원하려는 문자 세트를 선택하려면 응용 프로그램을 고려해야합니다. 사용자가 공급 한 입력을 저장하는 경우 소프트웨어가 결국 사용되는 모든 로케일을 예견하기가 어려울 수 있습니다. 그들 모두를 지원하려면 처음부터 UCS (유니 코드)를 지원하는 것이 가장 좋습니다. 그러나 이에 대한 비용이 있습니다. 많은 서유럽 캐릭터는 이제 하나가 아닌 문자 당 2 바이트의 스토리지가 필요합니다.

데이터베이스가 Collation을 사용하여 인덱스를 생성하는 경우 올바른 수집을 선택하는 데 도움이 될 수 있으며 나중에 해당 인덱스를 사용하여 정렬 된 결과를 제공합니다. 그러나 협업 규칙은 종종 로케일에 따라 다르기 때문에 다른 로케일의 규칙에 따라 결과를 정렬 해야하는 경우 그 지수는 가치가 없습니다.

사용하는 것이 좋습니다 utf8mb4_unicode_ci, 정렬 및 비교를위한 유니 코드 표준을 기반으로하는 것은 매우 다양한 언어로 정확하게 정렬됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top