SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano

273 Plugins, 191 contribs sur SPIP-Zone, 38 visiteurs en ce moment

Accueil du site > Administration et BDD > Charsets > Passez votre base SPIP en Unicode

Passez votre base SPIP en Unicode

29 août 2003 – par flash – <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

1 vote

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

Vous avez envie de passer à Unicode, mais vos anciens articles sont toujours en Latin 1 (ISO-8859-1). Il va donc falloir convertir votre base !

La conversion va se faire en trois étapes : créer une sauvegarde de la base, convertir cette sauvegarde, et la recharger. Attention, on utilise pour faire cela des outils UNIX ; ça a été testé sous GNU/Linux, et ça devrait marcher ailleurs (tels que FreeBSD, ou Cygwin sous Windows), mais je ne vous promets rien :-) Allez, c’est parti !

Dump de la base

Cela se fait très facilement par le programme mysqldump [1] :

$ mysqldump -a -Q -q -c -u <user> -p --add-drop-table --add-locks -v <db_spip> > spip-20030718-iso8859-1.dump

Remplacez évidemment <user> et <db_spip> par l’utilisateur et la base de données de votre site SPIP.

Attention, à partir de maintenant, toute modification faite sur le site ne sera pas prise en compte. Il convient donc de prévenir les auteurs et les autres administrateurs, si besoin est.

Conversion en UTF-8

UTF-8 est une manière (la plus utilisée en fait) d’encoder de l’Unicode. Attention cependant, si vous avez déjà des bouts d’Unicode dans votre base, allez d’abord voir la dernière partie de cet article !

Pour faire notre conversion, on va utiliser iconv, dont c’est la fonction principale :

$ iconv -f ISO8859-1 -t UTF-8 spip-20030718-iso8859-1.dump > spip-20030718-UTF-8.dump

Et voilà !

Importation du dump converti

Puisqu’on a utilisé --add-drop-table lors de notre sauvegarde, on peut facilement utiliser directement le dump converti. Pour faire cela, deux méthodes.

-  Se connecter d’abord à MySQL, puis charger le dump avec la commande source :

$ mysql -u<user> -p <db_name>
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4830 to server version: 3.23.49

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> source spip-20030718-UTF-8.dump

-  La deuxième méthode est plus courte :

$ mysql -u<user> -p <db_name> < spip-20030718-UTF-8.dump

Et voilà, « théoriquement », c’est bon :-)

Une partie de l’ancienne base est déjà en UTF-8 !

Et oui, cela arrive... Notamment lorsque comme nous, à MiNET, vous utilisez un rugbyman comme webmaster, qui active le mode UTF-8 de SPIP avant que la base ne soit convertie.

Cela nécessite un peu plus de travail, mais Perl va venir à notre rescousse. Le truc est de convertir certains caractères UTF-8 en ISO8859-1 :

$ perl -MEncode -pe 'for $a qw(à è ì ò ù À È Ì Ò Ù ä ë ï ö ü Ä Ë Ï Ö Ü á é í ó ú ç Á É Í Ó Ú Ç ÿ Ÿ â ê î ô û Â Ê Î Ô Û ß » « ¢) { $c = encode ("UTF-8", $a) ; s/$c/$a/g ; } print;' spip-20030718-iso8859-1.dump > spip-20030718-iso8859-1-real.dump

Rajoutez évidemment tous les caractères que vous pensez avoir utilisés après le passage de SPIP en Unicode (je pense notamment au caractère euro, que je ne peux pas produire avec ce clavier US :-).

Et vous pouvez ensuite procéder avec iconv sur ce nouveau fichier ! [2]

P.-S.

Comme d’habitude, les références indispensables :

  • man mysqldump
  • man iconv
  • perldoc perlrun

La version originale de cet article se trouve sur le site MiNET

Notes

[1Voici l’explication des options utilisées :

  • -a : ajoute les options de création spécifiques à MySQL ;
  • -Q : protège les noms de table et de colonne par des quotes ;
  • -q : n’utilise pas de tampon ;
  • -c : utilise des instructions INSERT complètes ;
  • -u : nom d’utilisateur pour la connexion à la base ;
  • -p : demande un mot de passe ;
  • —add-drop-table : ajoute une commande « DROP TABLE table » avant chaque CREATE ;
  • —add-locks : ajoute des locks autour des commandes INSERT ;
  • -v : affiche des informations pendant le dump.

[2Comme vous êtes des petits malins, vous avez déjà deviné que vous pouviez tout faire avec Perl, car Perl c’est mortel :

$ perl -MEncode -pe 'for $a qw(à è ì ò ù À È Ì Ò Ù ä ë ï ö ü Ä Ë Ï Ö Ü á é í ó ú ç Á É Í Ó Ú Ç ÿ Ÿ â ê î ô û Â Ê Î Ô Û ß » « ¢) { $c = encode ("UTF-8", $a) ; s/$c/$a/g ; } print encode ("UTF-8", $_);' spip-20030718-iso8859-1.dump > spip-20030718-UTF-8.dump

Bon, je l’ai pas testé, mais ca devrait marcher ;-).

Retour en haut de la page

Vos commentaires

  • Le 8 avril 2008 à 12:35, par avrelus En réponse à : Passez votre base SPIP en Unicode

    Bonjour, il me semble qu’il y a une petite erreur dans votre script perl.

    En effet, chez moi, chaque ligne est doublée dans le fichier de dump. Ce qui aboutit à une erreur d’importation dans la base (logique).

    Il me semble donc, qu’il faut enlever le « print ». La ligne devient :

    $ perl -MEncode -pe 'for $a qw(à è ì ò ù À È Ì Ò Ù ä ë ï ö ü Ä Ë Ï Ö Ü á é í ó ú ç Á É Í Ó Ú Ç ÿ æ œ € â ê î ô û Â Ê Î Ô Û ß » « ¢) { $c = encode ("UTF-8", $a) ; s/$c/$a/g ; };' journarles-sql.sql > journarles-sql_iso8859.sql

    J’ai rajouté les caractères suivants : « æ œ € »

    Merci quand même, c’est exactement ce que je cherchais...

    Répondre à ce message

  • Le 18 février 2008 à 11:28, par Jacques En réponse à : Passez votre base SPIP en Unicode

    "f ?vier « au lieu de » février"

    Le langage par défaut de spip, pour le site que j’administre , est UTF-8. Je ne comprends pas que les dates, et seulement elles, s’affichent avec le code Latin 1. Je n’ai pas rencontré ce problème avec les autres sites Spip que j’ai créés.

    Quelqu’un aurait-il une solution ? Ce site serait bilingue sans le savoir ?

    http://www.cyber-langues.asso.fr/

    Répondre à ce message

  • Le 24 février 2007 à 20:32, par Yvon En réponse à : Passez votre base SPIP en Unicode

    Bonjour,

    Merci pour cette contrib très documentée.

    Mais SPIP ne fait-il pas lui-même ce travail à partir de la page :
    http://www.apmep.levillage.org/spip/ecrire/?exec=convert_utf8

    Si ça marche, c’est vraiment la solution la plus cool (sauf peutêtre s’il y a déjà un mélange des codes comme tu l’as indiqué).

    J’ai un gros site en Latin 1 et je n’ose pas franchir le pas...

    Cordialement

    Répondre à ce message

  • Le 30 octobre 2004 à 20:40, par ? En réponse à : ecrire des caracteres phonétiques

    Bonjour,
    j’ai réussi à inserer du code unicode de certains carcteres phonétiques à travers la barre de boutons (comme pour Á). Ces caracteres s’affichent correctement avec Firefox, Netscape. Quant à IE, c’est la catastrophe. Il n’affiche que des carreaux alors que le codage defini dans le menu affichage est unicode Utf-8.
    Pourriez-vous m’aider à contourner ce probleme ?
    Merci d’avance.

    Mathieu

    Répondre à ce message

  • Le 30 août 2003 à 07:01, par RealET En réponse à : > Passez votre base SPIP en Unicode

    Question à 2 sous : comment est-ce qu’on dit à SPIP que les articles que l’on rajoute doivent être encodés en UTF-8 ?

    Parce que c’est bien beau de convertir la base, mais il faut ensuite que les nouveaux articles soient en UTF-8. ;-)

    • Le 30 août 2003 à 12:27, par Clark En réponse à : > Passez votre base SPIP en Unicode

      Il faut aller dans la partie ’Configuration du site’ (un admin doit le faire, donc). Ensuite, il faut aller dans les fonctions avancées. Et puis, dans cette page, il y a une partie ’Jeu de caractères du site’. Là, tu as sans doute ’alphabet occidental’ de sélectionné. Si tu veux passer en UTF-8, il faut sélectionner ’Alphabet universel’. Et à partir de là, SPIP considérera que tous les articles sont en UTF-8. Donc il y a un problème puisque les anciens articles ont été sauvegardés comme s’ils étaient en ISO-8859-1. C’est pour cela que cette mise à jour de la base de données est nécessaire.

    • Le 22 mars 2004 à 11:02, par ? En réponse à : Help please comment créer nouveau user

      Je n arrive pas à créer un nouvel utilisateur pour accéder à l espace privé. Comment prcéder ? Merci

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

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 Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Zpip-dist en HTML5

    15 juin 2010 – 10 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Une surcharge des squelettes Zpip-dist qui tire parti des nouvelles balises offertes par la spécification HTML5. Attention, ce plugin n’est plus compatible avec les nouvelles versions de Zpip, qui a connu plusieurs incompatibilités de nomenclature (...)

  • Une licence pour un article

    18 avril 2007 – 25 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Sur une idée originale de erational, voici un plugin permettant de lier une licence à un article.

  • Plugin Parrainage

    6 novembre 2011 – <blink style='color:red;'>public|spip|ecrire:commentaire</blink>

    Permettre aux utilisateurs d’inviter leurs contacts à s’inscrire sur le site. Description Vous connaissez le web moderne et son cortège d’applis toujours en version « beta » et de buzz sur le dernier réseau à la mode ? Vous voulez vous aussi vous y (...)

  • Formulaire de contact libre

    27 avril 2011 – 36 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Dans SPIP il n’y a pas un formulaire de contact, mais autant de formulaires de contact que d’auteurs. Cette phrase de Romy, dans son article Une page de contact dans mon SPIP, pointe un petit manque de SPIP. La possibilité d’insérer rapidement un (...)

  • Plugin Mot de Passe Compliqué

    2 novembre 2007 – 16 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Ce plugin ajoute un testeur de complexité de mot de passes dans les formulaires de choix de mot de passe de SPIP.