UTF-8 e problemi importazione database

Aperto da Sebbene, Venerdì - 13 Dicembre 2013 - 02:10

0 Utenti e 1 Visitatore stanno visualizzando questa discussione.

Sebbene

Ciao ragazzi,mi è capitato di dover importare un database e ho scoperto che se su Mysql si seleziona uft-8 poi le lettere accentate non funzionano, viceversa se si seleziona Latin1 le accentate si leggono in modo corretto.
Inoltre ho notato che in fase di installazione di SMF se seleziono UTF-8 viene fuori un macello con le lettere accentate.
Ma utf-8 non dovrebbe essere la codifica migliore, futuribile e futuristica? Perchè ho l'impressione che smf non la digerisca bene? Spiegatemi voi perchè ci sto capendo ben poco.


Darknico

Se decidi di usare UTF-8, devi di conseguenza utilizzare un traduzione UTF-8.
SMF lo digerisce senza problemi e sono in molti ad utilizzare questo charset
Non supporto privatamente, non risponderei e ci rimarreste male....

gnamignami

Non ascriverei a SMF un problema con UTF-8.
È mysql che è molto 'sensibile' e va impostato bene quando si crea il db.
Hello world!

Darknico

Citazione di: gnamignami il Venerdì - 13 Dicembre 2013 - 09:07
Non ascriverei a SMF un problema con UTF-8.
È mysql che è molto 'sensibile' e va impostato bene quando si crea il db.

Il DB viene creato da SMF in fase di installazione, e lo crea correttamente.
Direi che il problema è la traduzione, che viene utilizzata quella errata
Non supporto privatamente, non risponderei e ci rimarreste male....

gnamignami

Credevo di aver capito che Sebbene lavorasse su una importazione di un precedente db e non su una installazione scratch.

Dovendo importare dati da un dump, credo sia bene  assicurarsi che la collation della connessione di MySQL del db originario sia anch'essa utf-8 e probabilmente il db di Sebbene era in Latin1.

In tal caso credo si debba fare prima un dump del db originale in utf-8_general_ci, correggere eventualmente anche la collation per tabelle e colonne (DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci) e dopo importare, altrimenti compariranno comunque caratteri 'strani'.
Hello world!

emanuele

Anch'io sentendo parlare di "importare" mi viene da pensare ad un trasferimento e di solito in simili casi i problemi di codifica sorgono "nel mentre" (o durante l'export o durante l'import).

Un'altra cosa: "recentemente" MySQL (o forse parecchie distro, non sono esperto, vedo solo le conseguenze) ha cambiato il charset di default da latin_swedish a utf8_general. Questo sì è fonte di problemi in caso di installazione di SMF non in utf8, perché SMF suppone che il default sia latin_swedish, quindi non si preoccupa di "forzare" il charset corretto e quando si fa a postare qualcosa che contiene caratteri fuori dall'ascii il testo viene troncato.

Sebbene

Citazione di: Darknico il Venerdì - 13 Dicembre 2013 - 09:00
Se decidi di usare UTF-8, devi di conseguenza utilizzare un traduzione UTF-8.
SMF lo digerisce senza problemi e sono in molti ad utilizzare questo charset

Io non sono per nuiente esperto, in pratica se SMF è basato su Latin1, come mai in molti dicono che è meglio usare il charset UTF-8? Che vantaggi si traggono?
E scusa la domanda, come si fa ad usare una una traduzione UTF-8? Cioé, c'è una traduzione in italiano basata su UTF-8? Booo ...

Sebbene

Citazione di: Darknico il Venerdì - 13 Dicembre 2013 - 09:53
Citazione di: gnamignami il Venerdì - 13 Dicembre 2013 - 09:07
Non ascriverei a SMF un problema con UTF-8.
È mysql che è molto 'sensibile' e va impostato bene quando si crea il db.

Il DB viene creato da SMF in fase di installazione, e lo crea correttamente.
Direi che il problema è la traduzione, che viene utilizzata quella errata

E crea il database con charset Latin1 ... non potrebbe crearlo direttamente in UTF-8?  ;D

Sebbene

Citazione di: gnamignami il Venerdì - 13 Dicembre 2013 - 10:08
Credevo di aver capito che Sebbene lavorasse su una importazione di un precedente db e non su una installazione scratch.

Dovendo importare dati da un dump, credo sia bene  assicurarsi che la collation della connessione di MySQL del db originario sia anch'essa utf-8 e probabilmente il db di Sebbene era in Latin1.

In tal caso credo si debba fare prima un dump del db originale in utf-8_general_ci, correggere eventualmente anche la collation per tabelle e colonne (DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci) e dopo importare, altrimenti compariranno comunque caratteri 'strani'.

Trattasi effettivamente di un precedente database, comunque creato da SMF su base Latin1. Quindi diciamo che esportare in Latin11 e importanre in Latin1 risolve il problema, però mi domando perchè in fase di installazione di SMF se provo a selezionare UTF-8 esplode una bomba di geroglifici illegibili?
Il dump del database credo che non saprei farlo. Non l'ho mai fatto e sono inesperto. Necessiterei di delucidazioni in merito.

Sebbene

Citazione di: emanuele il Venerdì - 13 Dicembre 2013 - 12:08
Anch'io sentendo parlare di "importare" mi viene da pensare ad un trasferimento e di solito in simili casi i problemi di codifica sorgono "nel mentre" (o durante l'export o durante l'import).

Un'altra cosa: "recentemente" MySQL (o forse parecchie distro, non sono esperto, vedo solo le conseguenze) ha cambiato il charset di default da latin_swedish a utf8_general. Questo sì è fonte di problemi in caso di installazione di SMF non in utf8, perché SMF suppone che il default sia latin_swedish, quindi non si preoccupa di "forzare" il charset corretto e quando si fa a postare qualcosa che contiene caratteri fuori dall'ascii il testo viene troncato.

Bene, questo si che complica ulteriormente la questione?!  :-\ ??? ;D
Quindi comincia a rendersi necessaria l'installazione in UTF-8 ...

gnamignami

#10
Citazione di: Sebbene il Venerdì - 13 Dicembre 2013 - 13:26
E scusa la domanda, come si fa ad usare una una traduzione UTF-8? Cioé, c'è una traduzione in italiano basata su UTF-8?

Quando si scaricano per installarli i files di traduzione, solitamente (vale per molti CMS) sono disponibili in due o più versioni, una di solito è con charset UTF-8.

Se le carichi e vai in /yourhomedir/Themes/default/languages troverai i files di traduzione, se hai messo gli UTF-8, vedrai ad esempio invece di  xxxx.english_british.php che ci sarà il file xxxx.english_british-utf8.php

Ma tali files servono per tradurre il template e gli add-on, non i per contenuti del db, per quelli consiglierei di lavorare alle conversioni direttamente con mysql (e già farlo su un linux o su windows con uno xampp o easyphp cambia e non poco).

EDIT
Citazione di: Sebbene il Venerdì - 13 Dicembre 2013 - 13:34
Trattasi effettivamente di un precedente database, comunque creato da SMF su base Latin1. Quindi diciamo che esportare in Latin11 e importanre in Latin1 risolve il problema, però mi domando perchè in fase di installazione di SMF se provo a selezionare UTF-8 esplode una bomba di geroglifici illegibili?
Il dump del database credo che non saprei farlo. Non l'ho mai fatto e sono inesperto. Necessiterei di delucidazioni in merito.

Il dump se hai esportato il Db (phpmyadmin?) lo hai già fatto, se hai un'esportazione in un charset non UTF-8 penso che potrasti farti facilmente uno script (sorry ma - per default - mi riferisco sempre a sistemi UNIX LIKE; con windows penso basti un editor che faccia un find & replace accurato) che converta i classici caratteri che danno problemi in html entities (vedi: http://www.ascii.cl/htmlcodes.htm). Occhio agli apicini che danno problemi spesso e volentieri e di solito meglio renderli come 
Citazione´

Dopo importi il dump in un db 'pulito' in UTF-8, non dovresti avere problemi di sorta...
Hello world!

Sebbene

Citazione di: gnamignami il Venerdì - 13 Dicembre 2013 - 13:46
Citazione di: Sebbene il Venerdì - 13 Dicembre 2013 - 13:26
E scusa la domanda, come si fa ad usare una una traduzione UTF-8? Cioé, c'è una traduzione in italiano basata su UTF-8?

Quando si scaricano per installarli i files di traduzione, solitamente (vale per molti CMS) sono disponibili in due o più versioni, una di solito è con charset UTF-8.

Se le carichi e vai in /yourhomedir/Themes/default/languages troverai i files di traduzione, se hai messo gli UTF-8, vedrai ad esempio invece di  xxxx.english_british.php che ci sarà il file xxxx.english_british-utf8.php

Ma tali files servono per tradurre il template e gli add-on, non i per contenuti del db, per quelli consiglierei di lavorare alle conversioni direttamente con mysql (e già farlo su un linux o su windows con uno xampp o easyphp cambia e non poco).

EDIT
Citazione di: Sebbene il Venerdì - 13 Dicembre 2013 - 13:34
Trattasi effettivamente di un precedente database, comunque creato da SMF su base Latin1. Quindi diciamo che esportare in Latin11 e importanre in Latin1 risolve il problema, però mi domando perchè in fase di installazione di SMF se provo a selezionare UTF-8 esplode una bomba di geroglifici illegibili?
Il dump del database credo che non saprei farlo. Non l'ho mai fatto e sono inesperto. Necessiterei di delucidazioni in merito.

Il dump se hai esportato il Db (phpmyadmin?) lo hai già fatto, se hai un'esportazione in un charset non UTF-8 penso che potrasti farti facilmente uno script (sorry ma - per default - mi riferisco sempre a sistemi UNIX LIKE; con windows penso basti un editor che faccia un find & replace accurato) che converta i classici caratteri che danno problemi in html entities (vedi: http://www.ascii.cl/htmlcodes.htm). Occhio agli apicini che danno problemi spesso e volentieri e di solito meglio renderli come 
Citazione´

Dopo importi il dump in un db 'pulito' in UTF-8, non dovresti avere problemi di sorta...

Ti ringrazio molto per tutti i suggerimenti. Ho trovato questo http://kanjidict.stc.cx/recode.php ... spero funzioni bene.
Comunque una cosa non mi è chiara. Ai fini pratici quali agevolazioni comporta il fatto di convertire da Latin1 a UTF-8?
Importatndo il databese in Latin1 ho risolto il problema ma adesso mi chiedo quali siano le controindicazioni a lasciarlo così anziché convertirlo in UTF-8.

emanuele


Sebbene


Sebbene

Scusate, in phpMyAdmin se prima di esportare un database faccio l'operazione rappresentata nella foto sottostante codificandolo da latin1_swedish_ci a utf8_unicode_ci faccio bene? E' una funzione corretta per la conversione di un database?
Successivamente lo importerei su una installazione UTF-8 con traduzione  UTF-8.

Discussioni simili (3)