2016-05-18 14 views
13

Mi sono collegato in MariaDB/MySQL ed è entrato:Differenza tra utf8mb4_unicode_ci e utf8mb4_unicode_520_ci regole di confronto in MariaDB/MySQL?

SHOW COLLATION; 

vedo utf8mb4_unicode_ci e utf8mb4_unicode_520_ci tra le regole di confronto disponibili. In che modo queste regole di confronto differiscono tra loro e quali dovremmo utilizzare?

+1

Ho trovato risposte su SO [qui] (https://dba.stackexchange.com/questions/65863/mysql-collation-utf8-unicode-differences) e [qui] (https://stackoverflow.com/questions/18904883/quale-è-la-differenza-tra-utf8-unicode-ci-e-utf8-unicode-520-ci) e ho ottenuto una spiegazione di facile comprensione [qui] (https://www.monolune.com/mysql-utf8-charsets-e-collations-spiegati /). – Flux

risposta

16

Bene, è necessario leggere la documentazione. Non posso dirti cosa dovresti usare perché ogni progetto è diverso.

10.1.3 Convenzioni fascicolazione denominazione

nomi collazione MySQL seguono le seguenti convenzioni:

A nome di confronto inizia con il nome del set di caratteri con cui è associato, seguito da uno o più suffissi indicando altra caratteristiche di collazione. Ad esempio, utf8_general_ci e latin_swedish_ci sono collations rispettivamente per i set di caratteri utf8 e latin1.

Un confronto specifico della lingua include un nome di lingua. Ad esempio, utf8_turkish_ci e utf8_hungarian_ci ordinano i caratteri per il set di caratteri utf8 usando rispettivamente le regole di turco e ungherese.

La distinzione tra maiuscole e minuscole per l'ordinamento è indicata da _ci (senza distinzione tra maiuscole e minuscole), _cs (distinzione tra maiuscole e minuscole) o bin (binarie; i confronti di caratteri sono basati su valori di codice binario di caratteri). Ad esempio, latin1_general_ci è case insensitive, latin1_general_cs fa distinzione tra maiuscole e minuscole e latin1_bin utilizza valori di codice binario.

Per Unicode, i nomi delle regole di confronto possono includere un numero di versione per indicare la versione di Unicode Collation Algorithm (UCA) su cui sono basate le regole di confronto. Le regole di confronto basate su UCA senza numero di versione nel nome utilizzano le chiavi di peso UCA versione 4.0.0. Ad esempio:

utf8_unicode_ci (con nessuna versione denominata) si basa su chiavi di pesatura UCA 4.0.0> (http://www.unicode.org/Public/UCA/4.0.0/allkeys-4.0.0.txt).

utf8_unicode_520_ci si basa sui tasti di pesatura UCA 5.2.0 (http://www.unicode.org/Public/UCA/5.2.0/allkeys.txt).

Per Unicode, le regole xxx_general_mysql500_ci mantengono l'ordinamento pre-5.1.24 delle regole di confronto originali xxx_general_ci e consentono gli aggiornamenti per le tabelle create prima di MySQL 5.1.24. Per ulteriori informazioni, vedere Sezione 2.11.3, "Verifica della necessità di ricostruire tabelle o indici" e Sezione 2.11.4, "Ricostruzione o riparazione di tabelle o indici".

Fonte: https://dev.mysql.com/doc/refman/5.6/en/charset-collation-names.html

Problemi correlati