Affichage des accents dans la partie Configuration (version 19.04)

Mots-clés : 

Ce sujet a 6 réponses, 2 participants et a été mis à jour par  Olivier Crouzet, il y a 1 semaine et 3 jours.

  • Auteur
    Messages
  • #2440


    Olivier Crouzet

    Bonjour,

    Les titres de section qui comportent des accents (Congés et Heures de présence) sont rendus littéralement avec l’encodage html (Congés et Heures de présence).
    D’autre part et uniquement (?!) dans cette même section Congés, le paramètres Conges-Enable ainsi que tous les paramètres Récup-… (sauf Recup-Uneparjour et Recup-Agent) affichent leurs commentaires avec les accents non décodés ( ex : Autoriser les demandes de récupération…).
    D’autres commentaires de la même section sont rendus correctement (ex : Traiter les récupérations comme les congés ).

    L’observation est faite sur une base de test ou j’ai mise à jour Planning biblio à partir de la 2.7.14 vers 19.04 (+ passage de php 5.6 à php7). Aurai-je manqué quelque chose ?

    Olivier

  • #2704


    Jérôme
    Admin bbPress

    Bonjour,

    J’ai déjà rencontré ce cas, sans bien comprendre les causes de ce problème.

    J’ai pu le réglé en convertissant les données en encodage latin1 avec la commande linux iconv (je ne retrouve pas la commande exacte, mais vous trouverez des tutos sur Internet).

    Les étapes à suivre :
    1. Exporter les données avec mysqldump (de préférence, sinon depuis phpmyadmin)
    2. Gardez-en un exemplaire sur lequel vous n’apporterez pas de modification, pour pouvoir le recharger en cas d’erreur
    3. Convertir l’export avec iconv
    4. Importer les données converties dans la base de données avec la commande mysql (de préférence, sinon avec phpmyadmin).

  • #2785


    Olivier Crouzet

    Bonjour,

    Comme ça ne touche que la table config et les champs valeurs et commentaires, j’ai fait plus simple.
    Pour les titres de section (Congés et Heures de présence), on peut les réécrire directement dans la base sql. Sinon j’ai vu qu’il y avait une « atomicupdate » prévue à cette effet, 20190424_update_config_encoding.php, qu’on peut lancer via updatedatabase.php.
    Pour le reste j’ai fait des rechercher/remplacer ciblés sur les caractères indésirables :
    update config set commentaires = replace(commentaires,’é’,’é’),valeur = replace(valeur,’é’,’é’);
    update config set commentaires = replace(commentaires,’è’,’è’),valeur = replace(valeur,’è’,’è’);
    update config set commentaires = replace(commentaires,’ Ã ‘,’ à ‘),valeur = replace(valeur,’ Ã ‘,’ à ‘);
    update config set commentaires = replace(commentaires,’ç’,’ç’),valeur = replace(valeur,’ç’,’ç’);

    Olivier

  • #2788


    Olivier Crouzet

    Bonjour,
    Pour faire suite à mon précédent message. Le problème est probablement lié à l’utilisation de nouvelles librairies php dans la version 19.04.
    Cela concerne aussi les données saisies via un champ de l’interface web, essentiellement à priori les zones motifs et commentaires du dépot d’absence et ce avant la mise à jour. Les données saisies postérieurement sont correctement rendues.
    On peut compléter la correction sql précédemment indiquée pour la table config par celle-là pour la table absences :
    update absences set motif = replace(motif,’é’,’é’),commentaires = replace(commentaires,’é’,’é’);
    update absences set motif = replace(motif,’è’,’è’),commentaires = replace(commentaires,’è’,’è’);
    update absences set motif = replace(motif,’ç’,’ç’),commentaires = replace(commentaires,’ç’,’ç’);
    update absences set motif = replace(motif,’ Ã ‘,’ à ‘),commentaires = replace(commentaires,’ Ã ‘,’ à ‘);

    Olivier Crouzet

  • #2789


    Jérôme
    Admin bbPress

    Bonjour,

    Avez-vous la possibilité de faire quelques essais avec vos anciennes données (sans les transformations indiquées ci-dessus) ?

    Si oui,
    Pouvez-vous SVP modifier le fichier init_entitymanager.php, se trouvant à la racine de l’installation Planning Biblio, et y ajouter les lignes suivantes :

        'charset'  => 'utf8',
        'driverOptions' => array(
            1002 => 'SET NAMES utf8'
        )
    

    Ce qui donne :

    $dbParams = array(
        'driver'   => 'pdo_mysql',
        'host'     => $config['dbhost'],
        'user'     => $config['dbuser'],
        'password' => $config['dbpass'],
        'dbname'   => $config['dbname'],
        'charset'  => 'utf8',
        'driverOptions' => array(
            1002 => 'SET NAMES utf8'
        )
    );
    

    Le but de cet essai et de voir si le problème ne vient pas de l’initialisation d’entitymanager, intégré à partir de la version 19.04.
    Les données stockées dans la base sont (et doivent rester) en UTF-8. On ne devrait pas avoir à les modifier.

    Jérôme

  • #2794


    Jérôme
    Admin bbPress

    Bonsoir,

    Je viens de faire quelques essais et j’ai pu reproduire l’erreur.
    J’ai pu constater des erreurs d’encodage dans les zones commentaires de la configuration, après importation des données en provenance d’une ancienne installation.

    Tout d’abord, ignorez ma réponse précédente, elle ne corrige pas le problème et en créé d’autres.

    J’ai corrigé les erreurs d’encodage de la page configuration à l’aide de ce script :

    < ?php
      
    $version = 'update_db';
    
    include_once(__DIR__.'/include/config.php');
    
    $req = "select nom,commentaires from config;";
    
    $db = new db();
    $db->query($req);
    
    $sql = array();
    
    foreach ($db->result as $elem) {
            $name = $elem['nom'];
            $comment = $elem['commentaires'];
    
            $encoding = mb_detect_encoding($comment, 'UTF-8', true);
    
            if ($encoding === false) {
    
                    echo $encoding;
                    echo " : ";
                    echo $comment;
                    echo "\n";
    
                    $comment = utf8_encode($comment);
                    $sql[] = "update config set commentaires = '$comment' where nom='$name';";
            }
    }
    
    foreach ($sql as $elem) {
            $db = new db();
            $db->query($elem);
    }
    

    Script à déposer à la racine de l’installation Planning Biblio sous le nom update_db.php, et à exécuter comme suit :

    php -f update_db.php
    

    Encore une fois, traitez ceci avec prudence et sur une base de test uniquement.
    Je le ferai valider et s’il passe les tests, il sera intégré à la prochaine mise à jour de Planning Biblio.

    Explications :
    Ce script récupère tous les commentaires dont l’encodage n’est pas de l’UTF-8 pur, puis il les convertit.

    Le même schéma peut être reproduit pour les motifs d’absences par exemple.
    Merci de lister en réponse tous les champs sur lesquels vous constatez des erreurs d’encodage.
    Merci également de dire si ce script a corrigé vos erreurs, ou si il les a aggravées (-;

    Cordialement,
    Jérôme Combes

  • #2858


    Olivier Crouzet

    Bonjour
    J’ai testé sans succès le script update_db.php. Aucune chaine non utf8 n’est signalée.
    A noter que les champs « nom » des tables pl_poste_modeles_tab et activites sont aussi concernés. Dans le cas des activités, ça peut avoir un impact sur la mécanique de l’appli car, si je comprends bien, les noms d’activités sont repris après soustraction des accents comme nom de classe. Dans notre cas, par exemple, la classe activite_guichet_numerique apparaissait comme activite_guichet_numérique.

    Olivier Crouzet

Répondre à : Affichage des accents dans la partie Configuration (version 19.04)

Vos informations: