Levysoft
  • Home
  • Portfolio
  • WordPress Plugin
  • Contattami

Dal 2004 il blog di Antonio Troise

RSS FeedTwitterFacebook
Lug 6 2007

Risolvere il problema della visualizzazione errata dei caratteri accentati su WordPress cambiando il charset da ISO-8859 a UTF-8

Posted by Antonio Troise
Tweet

Il problema della codifica UTF-8 del testo presente nel database WordPress mi ha sempre assillato. In tutti i cambi hosting che ho fatto (tre in tutto) ho sempre riscontrato difficoltà con la visualizzazione dei caratteri accentati, tanto da doverli modificare a mano (o con dei search/replace sull’export del DB).
Il problema si presenta sopratutto nei cambi di hosting da sistemi Windows a quelli *unix (infatti, per esempio, Tophost usa server Windows mentre UpsHost BlooWeb usa server Linux), dove è necessaria la conversione del charset di WordPress da ISO-8859 a UTF-8 per visualizzare correttamente i caratteri accentati.
Ebbene, finalmente qualcuno ha trovato la soluzione e non posso quindi esimermi dal suggerirla anche a voi.

Per automatizzare la conversione, è sufficiente scaricare lo script PHP di Markus Tacker e seguire i seguenti passi:

  1. Fare il backup del vostro database con il comando mysqldump –opt DB_NAME oppure utilizzando phpMyAdmin
  2. Copiate lo script nella cartella wp-content del vostro blog (ad esempio: http://vostrosito.com/blog/wp-content/convert-encoding.php )
  3. Accedete via browser allo script

Ecco alcuni suggerimenti di Davide, utili allo scopo:

  1. per far funzionare lo script bisogna innanzitutto eliminare la riga die(’Please follow the instructions in ‘ . $_SERVER[’PHP_SELF’]);, rimuovendo la quale si accetta automaticamente la licenza ad inizio script (nel quale sostanzialmente l’autore si solleva da ogni responsabilità per eventuali danni al vostro database)
  2. per convertire il set di caratteri, lo script va eseguito solo una volta, e subito dopo cancellato (per sicurezza)
  3. se dopo la conversione (tramite la funzione mb_convert_encoding) compaiono nei titoli carattere non-ascii non validi come “für” (cosa che nei titoli dei feed incontro molto spesso, purtroppo) allora bisogna modificare una riga dello script scrivendo $decode = true; anziché $decode = false; e poi lanciare di nuovo lo script, poiché nel database ci sono dei caratteri utf-8 che vanno decodificati (tramite la funzione utf8_decode), e non convertiti.
  4. lo script modifica sia la collation del database che i valori interni allo stesso
  5. alla fine, viene visualizzato il seguente messaggio
    Remember to remove this script!
    giusto per non fare pasticci (che il backup potrebbe sempre sistemare)

Peccato che tempo fa, bonificai quasi tutti i post del DB con un metodo di ricerca e sostituzione iterativo; procedura un po’ più lunga di questa ma pure sempre funzionale.

Tag:backup, charset, db, font, Mysql, mysqldump, Php, phpmyadmin, set_di_caratteri, utf-8, Wordpress
CONTINUE READING >
11 comments

Categorie

Commenti Recenti

  • Antonio Troise on UltraEdit: per i programmatori esigenti il miglior editor di testo per Windows, Mac OS e Linux
  • Fioredicollina on UltraEdit: per i programmatori esigenti il miglior editor di testo per Windows, Mac OS e Linux
  • Antonio Troise on UltraEdit: per i programmatori esigenti il miglior editor di testo per Windows, Mac OS e Linux
  • Emanuele on UltraEdit: per i programmatori esigenti il miglior editor di testo per Windows, Mac OS e Linux
  • Luca on iDatabase: la valida alternativa di Bento per macOS e iOS per i database personali

Meta

  • Accedi
  • Entries RSS
  • Comments RSS
  • WordPress.org

Friends Link

  • GamerTagMatch
  • SeguiPrezzi.it – Risparmia con Amazon.it
  • Trendy Nail

Seguimi su:

  • facebook
  • twitter
  • rss
Creative Commons License
Levysoft by Antonio Troise is licensed under a Creative Commons Attribuzione-Non commerciale 2.5 Italia License.
© Copyright 2004 - 2014 - Levysoft by Antonio Troise