Come spiegato anche in questa guida su come convertire un database da latin 1 a utf8, le chance di successo non sono granché e dipende molto dalla tipologia di database, dalla complessità (quindi anche dal sistema che state utilizzando) e dalla mole di dati che avete da convertire.
Un’altra tecnica può essere quella di esportare il db e di reimportarlo con una codifica diversa. Vediamo come fare…
Come al solito ho supposto che il database si chiami dbname
, l’utente con permessi si chiami root
e che abbia come password password
. I quattro comandi da eseguire sono i seguenti (tutti eseguiti come amministratore):
sudo su mysqldump --user=root --password=password --default-character-set=latin1 --skip-set-charset dbname > dump.sql sed -r 's/latin1/utf8/g' dump.sql > dump_utf.sql mysql --user=root --password=password --execute="DROP DATABASE dbname; CREATE DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci;" mysql --user=root --password=password --default-character-set=utf8 dbname < dump_utf.sql
Mi ripeto nel dirvi che la probabilità che questo funzioni non è altissima ma dipende sempre da caso a caso, voi effettuate comunque un backup di tutto.