Suggerimenti per la migrazione a MySQL UTF/Unicode
-
09-06-2019 - |
Domanda
Qualcuno ha qualche suggerimento o suggerimento a cui prestare attenzione quando si tenta di migrare le tabelle MySQL dai set di caratteri svedesi o ascii predefiniti senza distinzione tra maiuscole e minuscole a utf-8?Alcuni dei progetti in cui sono coinvolto mirano a una migliore internazionalizzazione e il database costituirà una parte significativa di questo cambiamento.
Prima di cercare di modificare il database, convertiremo ciascun sito per utilizzare la codifica dei caratteri UTF-8 (dal meno critico al più) per garantire che tutti gli input/output utilizzino lo stesso set di caratteri.
Grazie per qualsiasi aiuto
Soluzione
Alcuni suggerimenti:
- Tuo
CHAR
EVARCHAR
le colonne utilizzeranno fino a 3 volte più spazio su disco.(Probabilmente non otterrai molto spazio su disco per le parole svedesi.) - Utilizzo
SET NAMES utf8
prima di leggere o scrivere nel database.Se non lo fai, otterrai personaggi parzialmente confusi.
Altri suggerimenti
Esaminerò i seguenti siti/articoli per trovare una risposta.
Domande frequenti su UTF-8 e Unicode
Episodio di Hanselminutes "Risolvere l'internazionalizzazione con Michael Kaplan"
E ho anche appena trovato un post molto pertinente di Derek Sivers @ O'Reilly ONLamp Blog mentre lo stavo scrivendo. Trasformazione dei dati MySQL in latin1 in utf8 utf-8
Fare attenzione alle limitazioni sulla lunghezza dell'indice.Se una tabella è strutturata, dire:
A Varchar (255) B Varchar (255) Key ('A', 'B')
Supererai il limite di 1000 byte sulla lunghezza delle chiavi.255+255 va bene, ma 255*3 + 255*3 non funzionerà.
Tuo
CHAR
EVARCHAR
le colonne utilizzeranno fino a 3 volte più spazio su disco.
Solo se sono pieni di latin-1 con ordinali > 128.Altrimenti, il maggiore utilizzo dello spazio di UTF-8 è minimo.
Le raccolte non sono sempre favorevoli.Otterrai umlat raccolti in versioni non umlat, il che non è sempre corretto.Potresti voler andare con utf8_bin, ma anche tutto fa distinzione tra maiuscole e minuscole.