SPIP - Contrib

SPIP - Contrib

[ar] [en] [es] [fr] [it]

84 visiteurs en ce moment

fontsizeup fontsizedown
Accueil du site > Contribs > Administration > Charsets > Archives Charsets > Comment passer son site en utf-8
[42 commentaires]

Comment passer son site en utf-8

mercredi 19 mai 2004, par Fil

0 vote

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 http://www.spip.net ou http://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 :

- 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).

P.-S.

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.

Retour en haut de la page

42 Messages de forum

Voir toute la discussion

Pages 1 | 2 | 3 | 4 | 5

  • Répondre à ce message

    24 août 2007 21:50 , par Tomtom

    J’ai corrigé mon erreur... Il fallait juste passer sous la dernière version de easy php ! Sa faisais un moment que j’avais le soucis, mais en se plongeant bien sans le problème, on arrive à toujours trouver une réponse ! ;)

  • Répondre à ce message

    24 août 2007 21:38 , par Tomtom

    Merci beaucoup pour cet article... En local, je ne comprenais pas comment faire ? J’étais obligé de choisir manuellement l’encodage des caractére > Unicode ! En fait il faut tous simplement ajouter la ligne suivante dans son header : Et le navigateur choisit automatiquement UTF-8 !

    C’est parfait, merci pour cet article ! Par contre en local (easyphp), j’ai l’erreur suivante : Warning : Compilation failed : this version of PCRE is not compiled with PCRE_UTF8 support at offset 0 in c :\easyphp\www\v3\ecrire\inc\charsets.php on line 108

    Si quelqu’un à eu le même soucis, je suis preneur ! (Sur d’autres sites j’avais eu ce soucis et une fois le site mis en ligne, cela se corrige !). Mais j’aimerais bien à ne plus avoir cette erreur !

    Merci d’avance ;)

  • Répondre à ce message

    6 octobre 2006 10:40 , par monsieurL

    Heu correction : pas de Pb d’accent, au contraire, mais pb de fonctionnement de mes Javascript....

  • Répondre à ce message

    6 octobre 2006 10:02 , par monsieurL

    Non, ça ne marche pas. La balise n’est pas prise en compte, donc pb d’accent.

    En fait j’ai besoin de cette balise, car sans elle, les boutons d’administrations empêchent apparemment mes fonctions javascript de fonctionner. J’ai bien essayer d’activer $flag_preserver=true (qui va être abandonné à la version 2) qui est censé désactiver ces boutons.... mais ça ne marche pas.

    Merci qu’en même.

  • Répondre à ce message

    4 octobre 2006 18:23 , par Fil

    Désolé, un espace en trop :

    #HTTP_HEADER{Content-Type: text/html; charset=#CHARSET}

  • Répondre à ce message

    4 octobre 2006 18:22 , par Fil

    essaie :

    #HTTP_HEADER{Content-Type : text/html; charset=#CHARSET}

  • Répondre à ce message

    4 octobre 2006 17:57 , par monsieurL

    Re-Bonjour,

    Je viens de m’appercevoir, que j’ai absolument besoin de cette balise #HTTP_HEADER !! Je suis coincé.

    Help....Quelqu’un ç une solution ??

  • Répondre à ce message

    4 octobre 2006 17:29 , par monsieurL

    J’ai finalement trouvé le problème : Dans mes squellettes, j’avais ajouté l’en-tête #HTTP_HEADERContent-Type : text/html. Il semble que cela pose problème, car en le supprimant, je supprime aussi le problème.

    Cordialement

  • Répondre à ce message

    4 octobre 2006 10:17 , par monsieurL

    Bonjour,

    Merci pour l’info. Malheureusement, Ca ne résoud pas le problème, ni pour les anciens documents, ni pour ceux entrées aprés la manip ??? :-(

    Alors que ma base et SPIP sont bien UTF-8 !! J’ai bien mis meta http-equiv="Content-Type" content="text/html ; charset=#CHARSET" dans l’en-tête (dans la balise head).

    Cordialement.

  • Répondre à ce message

    3 octobre 2006 11:13 , par Alexandra

    Dans configuration, gestion des langues, domaine/ecrire/ ?exec=config_lang, tu as un lien pour une moulinette de conversion d’iso en utf-8.
    Domaine/ecrire/ ?exec=convert_utf8 Ton répertoire ecrire/data doit etre en 777. Fais une sauvegarde avant de ta base en iso, c’est plus prudent meme si la moulinette est très fiable. Ensuite, dans tes squelettes, met bien

    [(#REM) Preciser le charset ]
    <meta http-equiv="Content-Type" content="text/html; charset=#CHARSET" />

Pages 1 | 2 | 3 | 4 | 5

Répondre à cet article

Retour en haut de la page

Ça discute par ici