Mysql
 sql >> Database >  >> RDS >> Mysql

Fascicolazione MySQL per memorizzare dati multilingue di lingua sconosciuta

Dovresti usare un confronto Unicode. Puoi impostarlo di default sul tuo sistema o su ogni campo delle tue tabelle. Esistono i seguenti nomi di confronto Unicode e queste sono le loro differenze:

utf8_general_ci è una raccolta molto semplice. Rimuove semplicemente tutti gli accenti, quindi converte in maiuscolo e utilizza il codice di questo tipo di lettera del risultato "lettera base" per confrontare.

utf8_unicode_ci utilizza la tabella degli elementi di confronto Unicode predefinita.

Le differenze principali sono:

  1. utf8_unicode_ci supporta le cosiddette espansioni e legature, ad esempio:la lettera tedesca ß (U+00DF LETTER SHARP S) è ordinata vicino a "ss" La lettera Œ (U+0152 LATIN CAPITAL LIGATURE OE) è ordinata vicino a "OE".

utf8_general_ci non supporta espansioni/legature, ordina tutte queste lettere come singoli caratteri e talvolta nell'ordine sbagliato.

  1. utf8_unicode_ci è generalmente più accurato per tutti gli script. Ad esempio, in cirillico:utf8_unicode_ci va bene per tutte queste lingue:russo, bulgaro, bielorusso, macedone, serbo e ucraino. Mentre utf8_general_ci va bene solo per il sottoinsieme russo e bulgaro di cirillico. Le lettere extra usate in bielorusso, macedone, serbo e ucraino non sono ordinate bene.

+/- Lo svantaggio di utf8_unicode_ci è che è un po' più lento di utf8_general_ci.

Quindi, a seconda, se lo sai o meno, quali lingue/caratteri specifici utilizzerai, ti consiglio di utilizzare utf8_unicode_ci che ha una copertura più ampia.