Comment passer son site en utf-8

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Ce script vous permet de convertir votre dump de la base de données, de iso-8859-1 vers utf-8.

ATTENTION : cet article est obsolète. Le convertisseur de jeux de caractères vers utf-8 est désormais intégré à SPIP 1.9, et beaucoup plus facile et sûr que la méthode exposée ci-dessous.

Vous avez probablement commencé à utiliser SPIP dans le jeu de caractères iso-8859-1, qui correspond à l’intallation standard. Mais ce jeu est limité aux caractères occidentaux, et voilà que votre site doit devenir multilingue ; il est temps de passer à utf-8. Pour en savoir plus, vous pouvez lire Voyage dans la tour de Babel du net.

Remarque : à ceux qui s’inquiéteraient des risques d’un tel changement : d’après mon expérience sur des sites comment www.spip.net ou www.monde-diplomatique.fr, personne ne s’est plaint. Cela signifie donc que les navigateurs qui ne sauraient pas lire l’utf-8 ne sont plus du tout en circulation. (Bien entendu, ce n’est peut-être pas le cas dans des applications très spécifiques.)

-  Commencez par vérifier vos squelettes. Ceux-ci ne doivent en effet contenir aucun caractère accentué sous forme « brute » : il faut donc éliminer tous ces « é » des squelettes, et les remplacer par leur entité html, &eacute;... il faut ensuite vérifier qu’ils contiennent bien, dans la partie <head>...</head>, la ligne suivante :

<meta http-equiv="Content-Type" content="text/html; charset=#CHARSET">

-  Procédez à une sauvegarde de la base de données. Selon la méthode habituelle, au format dump.xml ou dump.xml.gz.

-  Convertissez la sauvegarde au format utf-8.

Pour cela, installez le script ci-dessous dans le répertoire ecrire/, puis ouvrez la page avec votre navigateur, et suivez les instructions (une nouvelle authentification ftp est nécessaire).

Vous pouvez suivre l’opération de conversion (qui peut durer plusieurs minutes sur un gros site !) en regardant le fichier ecrire/data/spip.log : il doit se terminer par une mention « conversion effectuée ».

Si la conversion a fonctionné normalement (sans timeout), vous pouvez réimporter la base ecrire/data/dump-utf8.xml. (N’ayez crainte : si le résultat ne vous convient pas, il sera toujours temps de réinstaller la sauvegarde dump.xml.)

N. B. : si votre base de départ n’était pas en iso-8859-1, les résultats seront imprévisibles, et sûrement pas très bons :)

-  Configurez le site. Rendez-vous dans la configuration du site, partie « Gestion des langues », et indiquez à SPIP que le charset de la base est désormais utf-8. (Cette option n’est disponible que si vous êtes en interface complète).

-  Videz le cache. Il est impératif de vider le cache, sinon certains navigateurs n’arriveront pas à afficher des pages se présentant comme de l’utf-8 (d’après les nouveaux réglages de SPIP) mais contenant des caractères iso-8859-1 (encore présents dans les « vieux » fichiers cache).

Si vous avez converti votre site grâce à cette méthode, je vous remercie de le signaler, soit dans le forum ci-dessous, soit en m’envoyant un mail privé, indiquant son URL.

PS : Pour convertir depuis l’arabe (windows-1256), il faudra au préalable ouvrir le fichier du script et modifier la valeur de $import_charset.

Discussion

17 discussions

  • J’ai passe mon autre site en UTF-8, mais il n’y a aucun serveur qui va permettre un temps d’execution de 10 min. J’ai du faire le tout en local puis de telecharger le fichier dump-utf8.xml (30Mb) par ftp sur le serveur.

    Répondre à ce message

  • 1

    L’opération s’est globalement bien passée.

    J’ai eu quelques souscis avec les symboles € (ils ont disparu des articles suite au passage en utf-8 / j’ai rajouté les € a posteriori).

    Plus quelques apostrophes « fantôme » (dans certains articles et pas tous : bizarre). Les apostrophes apparaissent normalement sauf lorsque l’on veut modifier l’article, ces apostrophes disparaissent dans l’interface d’édition. Si on rajoute les apostrophes manquantes et que l’on valide, on se retrouve finalement avec deux apostrophes !

    A part cela, RAS.

    • Merci pour l’info.

      Ton site était probablement en iso-8859-15 ? Ces caractères-là n’existent pas, pour ce que j’en ai compris, en iso-8859-1.

    Répondre à ce message

  • Nouvelle version du script :
    — compatible windows-1256 ;
    — suivi de la conversion dans le fichier spip.log

    Répondre à ce message

  • Tout a marché comme sur des roulettes
    ...
    mis à part que tout le contenu de mes champs extras a purement et simplement volé dans la manip.
    Y’a plus un champ extra rempli :D

    Le problème n’est pas énorme vu que j’ai mon site en double, commencé depuis peu, et que je peux repiquer « à mano » les infos ... mais si j’avais eu 2 ans de saisie de champs extra ... j’aurais à coup sûr fait une crise cardiaque !

    En tous cas, voilà une initiative d’uniformisation des langages (codage et lecture) heureuse.

    Bien à tous

    Soÿ

    Répondre à ce message

  • 2

    Comme je l’ai écrit le 6 mai, la conversion s’est faite sans problème... Sauf que j’ai découvert depuis que les stats du site sont vidées avant le 6 mai... dommage.

    • Tu as vidé ta base avant de recharger la sauvegarde ? La sauvegarde ne contient pas les stats ? Hum...

    • Je confirme : la sauvegarde ne contenant ni les statistiques, ni les référers, ni les messages privés :

      — ceux-ci sont détruits si tu effaces la base ;
      — les messages privés ne sont pas convertis en utf-8.

      (Ce commentaire correspond à toutes les version de SPIP, au 12 mai 2004 ; ça pourrait évoluer par la suite).

    Répondre à ce message

  • 3

    OK merci FIL, on va essayer de rebabeliser ... mais ...
    qq chtites kouetches :
    -  pourquoi faut-il nettoyer les caractères accentués dans les skelettes et pas seulement dans le DATA ?
    -  si je lis bien ton script, il faudrait également modifier le

    <?xml iso-8859-1 en <?xml utf-8 dans les skelettes
    _ ... mais pour les skel qui sont encore en HTMLxx ??
    _ i.e. idem pour ceux qui ne signalent pas le 'lang' ??
    - où peut-on trouver une table de toutes les correspondances pour transcoder de l'iso éàùê vers les entites_html ?
    - idem pour les caractères Copyright & co .. 
    
    Merci 
    
    
    
    • A propos du bidule XML, c’est inutile (juste une fioritue que j’ai ajoutée dans le code).

      A propos des squelettes, j’ai oublié de signaler dans l’article qu’il fallait vérifier que les squelettes contiennent bien la ligne précisant le #CHARSET : je l’ajoute.

    • merci pour l’info sur le META CHARSET, j’aurais du y penser :-/

      .. tiens moi aussi je bosse (HI ...partiellement) :
      j’ai trouvé une table de correspondance qui m’apparait complète pour les utilisateurs de l’iso-latin (à tester par les pro, je ne suis pas pro) :
      -  http://www.trucsweb.com/HTML/trucs....

      (PS : un remarque destinée au ouèpmestre de spip-contrib (je la vois car je suis dans le formulaire-forum : ne serait-il pas interessant d’avoir ET l’article originel ET le commentaire auquel on répond A COTE à Gauche, au lieu de n’avoir seulement que l’article originel EN DESSOUS ??
      ... et une liste des smileys, tant qu’on y est, non ? ;-) )

    • Pour moi, tout s’est passé sur des roulettes !

      Suggestiuon concernant le texte (!)

      Une fois que vous avez exporté votre base en iso-8859-1 dans le fichier ecrire/data/dump.xml (ou ecrire/data/dump.xml), (...)

      Bref, deux fois ecrire/data/dump.xml . Il manque un petit .gz...

      J’avais dit que c’était pour fignoler ;-)

    Répondre à ce message

  • 4

    .... tiens voilà le résultat ... grrr heureusement que c’est un de mes qq sites de test ;)
    -  ... j’ai modifié les skel
    -  ... j’ai chargé le changer_charset
    -  ... j’ai fait mouliné ( zéro pb)
    -  ... j’ai paramétré le uft-8 dans le site
    -  ... j’ai vidé le cache ( il y a eu un plantage page inaccessible) et j’ai revidé (il laissait tous les skel_machin.php3, avec un .htaccess) puis à la main => totalement vide
    -  ... j’ai réindexé

    • Mais pourquoi #CHARSET s’affiche-t-il en clair dans la page, hein ?

    • ... peut-être que c’est tout simplement la moulinette qui a coincé (site en 1.7.1) ?

      car j’ai constaté qu’un clone du site sur la même base sql était devenu illisible avec ses anciens skel resté en iso-latin avec un SPIP également resté en iso-latin

      http://www.burtega.net/eva7/article...
      (... un bon vieux skel EVA de derrières les fagots )

      j’ai recommencé la restauration du dumputf8 à la main .. ; et apparement rien n’y fait ( ou alors j’ai fait une grooooossière erreur vu l’heure tardive (le #CHARSET est pourtant installé) ???

      Ce qui est curieux est que le rubricage fonctionne bien dans le menu déroulant à droite et que l’encodage fonctionne avec les liens en dur [ :/
      ... mais que le rubricage de l’ancien skel Eva (iso) est lui perturbé... je vais me coucher ;)

      .. ; je retenterai la moulinette demain, bonne nuit ...des fois SPIP ça s’arrange tout seul pendant la nuit ;)

    • je suis hebergé sur PHPnet/OVH

      infophp

      @+ (soupir déçu .. ; comme pour spikini ...)

    • Ah oui, tu utilises <INCLURE(metatags.html)> ; si tu veux avoir une chance de fonctionner, déjà cela devrait être <INCLURE(metatags.php3)>.

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom