SPIP-Contrib

SPIP-Contrib

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

286 Plugins, 197 contribs sur SPIP-Zone, 275 visiteurs en ce moment

Accueil > Administration et BDD > Charsets > Convertir un site SPIP 3 en utf-8 avec le plugin Grenier

Convertir un site SPIP 3 en utf-8 avec le plugin Grenier

8 janvier 2014 – par erational – 17 commentaires

13 votes

SPIP 3 fonctionne nativement avec l’encodage universel unicode utf-8.

Sur certains sites (par exemple sur une mise à jour), on peut avoir un site qui est resté en iso-latin ce qui n’est pas conseillé (source de bugs, d’incompatibilité, ...) .

Voici la manière de le convertir simplement en utf-8.

Contrairement à SPIP 2, on ne peut pas convertir le site directement par la partie privée, il faut passer par le plugin Grenier :

  1. Télécharger et activer le plugin Grenier
  2. Faire un sauvegarde de votre site (à la fois en créant un dump SPIP mais aussi un export MySQL sous phpMyAdmin pour pouvoir restaurer l’existant en cas de problème)
  3. Se rendre sur la page ecrire/?exec=base_convert_utf8
  4. Lancer le script !

Autre script lié à l’encodage de la base de donnée
Le plugin grenier dispose aussi d’un autre script qui lui permet de modifier l’interclassement de votre base pour le repasser en utf-8 si ce n’est pas le cas.

Par exemple : vous avez un site SPIP déclaré en unicode mais l’interclassement est resté en latin. (Si vous l’éditez sous phpmyadmin, les champs sont encodés bizarrement).

Dans ce cas, il faut appeler le script ecrire/?exec=base_convert_sql_utf8


Cas d’une base sqlite
Pour le cas très particulier des personnes avec une base en Sqlite.
Voici les lignes de commandes requises pour convertir votre base (astuce fournie par ben).

Autres ressources

Dans les cas où cela ne fonctionne pas, consulter aussi
http://zzz.rezo.net/Reparer-le-char...
http://contrib.spip.net/utf8-vrac-d...

Dernière modification de cette page le 5 février 2016

Retour en haut de la page

Vos commentaires

  • Le 2 août 2016 à 03:19, par DD En réponse à : Convertir un site SPIP 3 en utf-8 avec le plugin Grenier

    Sur la page / ?exec=fulltext en haut j’ai X fois la mention « Une incohérence entre le charset de votre site et celui des tables de votre base de données risque de fausser les recherches avec caractères accentués :convertir en UTF-8 pour restaurer la cohérence »

    j’ai installé la version du plugin Grenier sur un SPIP 3.1.1 et j’ai Fichier convert_sql_utf8 introuvable pour / ?exec=convert_sql_utf8

    pour ?exec=base_convert_utf8 j’ai « Votre site est déjà en utf-8, inutile de le convertir... »

    Est-ce qu’avec le bon encodage en UTF-8 la recherche différencie les caractères accentués ? Pour l’instant c’est bien le cas sur mon site (mais ce n’est pas la panacée car beaucoup d’internautes ne les tapent pas) et donc une recherche sur « bebe » ne retournera rien même s’il y a tout bien de « bébé » dans les textes.

    Merci
    dd

    • Le 2 août 2016 à 19:52, par DD En réponse à : Convertir un site SPIP 3 en utf-8 avec le plugin Grenier

      J’ai un autre effet de bord lorsque le plugin grenier est activé : tout le contenu éditorial au centre de la page ecrire/ ?exec=accueil disparaît (liste des derniers articles, etc.)

      dd

    • Le 12 août 2016 à 22:40, par neofutur En réponse à : Convertir un site SPIP 3 en utf-8 avec le plugin Grenier

      ici aussi ecrire/ ?exec=base_convert_sql_utf8 donne juste :

      Fichier base_convert_sql_utf8 introuvable

      concernant le probleme "une recherche sur « bebe » ne retournera rien même s’il y a tout bien de « bébé » dans les textes."
      je suis a 100 % d accord, il faudrait faire comme google, et ignorer totalement les accents lors d une recherche

    Répondre à ce message

  • Le 19 mai 2016 à 11:12, par Mickael En réponse à : Convertir un site SPIP 3 en utf-8 avec le plugin Grenier

    Merci pour ce plugin utilisé avec Spip 3.0.17
    Pour info, le plugin n’était pas visible l’admin, et l’url « ecrire/ ?exec=base_convert_utf8 » restait introuvable.
    Il a fallu que je rajoute ceci à la fin du fichier paquet.xml pour l’activer et accéder au script de conversion :
    <menu nom="grenier" titre="grenier:grenier" parent="menu_squelette" icone="images/grenier-32.png" action="configurer_grenier" />

    • Le 28 juillet 2016 à 02:43, par neofutur En réponse à : Convertir un site SPIP 3 en utf-8 avec le plugin Grenier

      ici aussi la version 3.0 ne fonctionne pas, il apparait bien dans la liste de plugins inactifs, mais apres activation « reussie » il reste dans la liste des inactifs, et les liens de conversion ne fonctionnent pas.

    • Le 28 juillet 2016 à 18:55, par b_b En réponse à : Convertir un site SPIP 3 en utf-8 avec le plugin Grenier

      Pour info, je viens de tester sous SPIP 3.0.23-dev svn avec la version 0.2.4 (elle aussi svn) du plugin et je ne reproduis pas. Le plugin s’active bien, je le vois dans la liste des plugins actifs et j’ai bien accès à la page de conversion...

    Répondre à ce message

  • Le 29 janvier 2016 à 19:31, par Zeugme En réponse à : Convertir un site SPIP 3 en utf-8 avec le plugin Grenier

    Bonjour,

    Merci pour ce plugin bien efficace avec Spip 3.0.
    J’ai malheureusement fait la mise à jour vers Spip 3.1 et là le plugin est incompatible.
    Il y a-t-il une solution ?
    Déjà merci de votre réponse

    Répondre à ce message

  • Le 26 mai 2015 à 14:33, par DD En réponse à : Convertir un site SPIP 3 en utf-8 avec le plugin Grenier

    Ce plugin est excellent ! Je ne sais pas si c’est voulu mais il ne s’affiche pas dans la liste des plugins sur la page ecrire/ ?exec=charger_plugin

    dd

    Répondre à ce message

  • Le 14 mai 2014 à 18:18, par pverrier En réponse à : Convertir un site SPIP 3 en utf-8 avec le plugin Grenier

    Bonjour,

    J’ai un site sur lequel la conversion de la structure des tables ne s’est pas bien déroulée, au final certains champs se sont retrouvés en utf8, d’autres sont restés en latin1.
    Ce qui est dommage, c’est que les erreurs MySQL rencontrées ne sont pas affichées.
    Je propose donc l’ajout de cette ligne juste après l’affichage des requêtes de conversion exécutées :
    if (!_DEBUG_CONVERT && sql_errno()!=0)  print '<p style="color:red;">Erreur: '.sql_error().'</p>';

    Avec ces affichages j’ai pu identifier un premier problème lié à des index FULLTEXT, que j’ai pu régler.

    Puis un second lot d’erreurs lié à la conversion intermédiaire en BLOB comme ces exemples :

    SQL : ALTER TABLE spip_articles CHANGE statut statut blob   NOT NULL
    Erreur : BLOB/TEXT column 'statut' used in key specification without a key length

    SQL : ALTER TABLE spip_articles CHANGE export export blob  DEFAULT 'oui'
    Erreur : BLOB/TEXT column 'export' can't have a default value

    Provenant de cette portion de code (fichier base/convert_sql_utf8.php ligne 92) :

     $type_texte= $row2['Type'];
     $type_blob = "blob";
     if (strpos($type_texte,"text")!==FALSE)
       $type_blob = str_replace("text","blob",$type_texte);

    plus bas on exécute (L107) :
    "ALTER TABLE spip_$nom CHANGE $champ $champ $type_blob $default $notnull"

    En clair, le type destination est d’office blob sauf si le type orifinal est machinTEXT alors il devient machinBLOB. Je suppose qu’il faut passer provisoirement en binaire pour éviter une quelconque transformation des données lors du passage en utf8 (?). Toujours est-il que cette opération est refusée sur beaucoup de champs (généralement en VARCHAR). Faut-il s’en inquiéter ?

    Sont concernés les champs (soit avec une valeur par défaut, soit utilisés dans un index) :
    -  statut, export, lang, langue_choisie de spip_articles
    -  login, statut, source, webmestre de spip_auteurs
    -  objet, vu de spip_auteurs_liens
    -  langue_choisie de spip_breves
    -  media, mode, distant, extension de spip_documents
    -  objet, vu de spip_documents_liens
    -  objet, statut de spip_forum
    -  objet de spip_jobs_liens
    -  nom, impt de spip_meta
    -  objet de spip_mots_liens
    -  actif, installe, superieur, obsolete, attente de spip_paquets
    -  statut de spip_petitions
    -  prefixe de spip_plugins
    -  lang, langue_choisie de spip_rubriques
    -  statut de spip_signatures
    -  statut, moderation, miroir, oubli, resume de spip_syndic
    -  url, statut de spip_syndic_articles
    -  extension, inclus, upload, media_defaut de spip_types_documents
    -  url, type de spip_urls
    -  objet de spip_versions
    -  objet de spip_versions_fragments
    (sans parler des autres champs ou tables non installées par le core)

    Ca fait beaucoup de champs en erreur sur cette étape de conversion en BLOB ; cela dit, beaucoup d’entre eux contiennent des chaînes prédéfinies (objet, langue, statut) qui ne poseront pas de problème.

    J’ai modifié le script pour qu’il affiche les erreurs et des instructions SELECT DISTINCT champs à copier-coller dans phpMyAdmin pour vérifier que les données de ces champs en erreur n’ont pas subi de dommages.
    Il peut être téléchargé à cette adresse (site du Kit labos CNRS) : http://www.harmoweb.cnrs.fr/IMG/zip/convert_sql_utf8-2.zip

    Pour info, aucun de ces champs récalcitrants à la conversion en BLOB n’ont finalement posé de problème de conversion.

    • Le 15 mai 2014 à 10:23, par pverrier En réponse à : Convertir un site SPIP 3 en utf-8 avec le plugin Grenier

      Une autre remarque : j’ai constaté que les champs `statut` varchar(10) NOT NULL DEFAULT '0', (présents dans de nombreuses tables) perdent leur valeur par défaut '0' après conversion des structures.

      Géré en ajoutant L105 :
      $default = $row2['Default'] || $row2[’Default’]===’0’ ?(" DEFAULT ".sql_quote($row2['Default'])):"";

    Répondre à ce message

  • Le 8 mai 2014 à 18:35, par Nadir En réponse à : Convertir un site SPIP 3 en utf-8 avec le plugin Grenier

    Super boulot, cela m’a pris à peine 30s. Bravo !!!

    Répondre à ce message

  • Le 1er avril 2014 à 16:04, par pverrier En réponse à : Convertir un site SPIP 3 en utf-8 avec le plugin Grenier

    Bonjour et merci pour ce plugin qui m’a permis de convertir un site iso-8859-1 en utf-8 ; une remarque cependant, ce site utilisait le plugin Agenda et les événements n’étaient pas convertis (table spip_evenements) ; à cette fin j’ai ajouté dans grenier/base/convert_utf8.php la ligne
    ’spip_evenements’ => ’titre’,
    (après ’spip_articles’), cela a fonctionné.

    Répondre à ce message

  • Le 19 février 2014 à 21:45, par Ben. En réponse à : Convertir un site SPIP 3 en utf-8 avec le plugin Grenier

    Soit un SPIP 1.9.x avec une base en iso-8859-1. En local après avoir importé la base mysql. Je connecte un nouveau SPIP3 tout frais. La migration de la base se déroule bien de 1.9 vers 3. Mon site est toujours en iso-8859-1 quand je vais dans ecrire/?exec=configurer_langue.

    J’active le plugin grenier ( svn co svn://zone.spip.org/spip-zone/_core_/plugins/grenier) .

    Puis je vais visiter ecrire/?exec=base_convert_utf8 et ecrire/?exec=base_convert_sql_utf8 Et hop c’est nickel !!!

    merci Erational

    Répondre à ce message

  • Le 13 janvier 2014 à 23:16, par peter bang En réponse à : Convertir un site SPIP 3 en utf-8 avec le plugin Grenier

    Voici un cas de figure qui se présente à moi : j’ai des tables en utf8 et d’autres en iso 8859. Faut-il procéder avec Grenier ?

    Répondre à ce message

Répondre à cet article

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

  • Mailshot

    16 janvier 2013 – 254 commentaires

    Ce plugin prend en charge l’envoi en nombre d’info-lettres par email. Mailshot permet l’envoi en nombre d’emails au moyen d’un SMTP (ou d’un service externe) dédié à cet effet. Il permet de limiter la cadence d’envoi. Enfin, ce plugin implémente la (...)

  • bigfoot

    16 juin 2015 – 56 commentaires

    Un plugin qui facilite l’utilisation des notes de bas de page en les affichant dans des infobulles à l’aide d’un peu de javascript. Le constat de l’auteur du script : Les notes de bas de page sur le web sont une plaie. Tu dois d’abord essayer de (...)

  • SkelEditor 2.0

    1er mars 2010 – 74 commentaires

    La version remaniée et enrichie du plugin, pour SPIP 2.1, qui vous permet d’éditer votre squelette directement en ligne sans passer dans le FTP Ce plugin vous permet d’éditer les fichiers du squelette courant depuis l’interface privé. Cela peut (...)

  • CKeditor 3.0

    4 octobre 2009 – 1218 commentaires

    CKeditor est l’évolution de l’éditeur WYSIWYG : FCKeditor, avec ce plugin vous pourrez utiliser cet éditeur à la place de l’éditeur de spip tout en laissant le choix à vos auteurs de l’éditeur qu’ils préfèrent utiliser. Attention : cet éditeur WYSIWYG (...)

  • GIS 4

    11 août 2012 – 1344 commentaires

    Présentation et nouveautés La version 4 de GIS abandonne la libraire Mapstraction au profit de Leaflet. Cette librairie permet de s’affranchir des librairies propriétaires tout en gardant les mêmes fonctionnalités, elle propose même de nouvelles (...)