formateur informatique

Gérer les accents à l'importation des données MySql

Accueil  >  Technique  >  Php  >  Php Avancé  >  Gérer les accents à l'importation des données MySql
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux, voici son url absolue :

Pour l'intégrer sur votre site internet ou blog, vous pouvez l'embarquer :

Sujets et formations similaires :


Importations MySql avec accents

Cette formation est une parenthèse intéressante dans la progression de l'apprentissage des techniques de programmation serveur avec le langage Php. Il est parfois nécessaire de récupérer des sources externes encodées différemment et gérant les caractères latins. Nous allons voir que leur importation peut s'avérer problématique. Mais nous allons livrer une astuce, simple de mise en oeuvre, qui règle le problème.



Défauts d'encodage
Dans la vie d'un site Web, les administrateurs peuvent être amenés à engager des modifications de structure importantes. Dans ces conditions, les CMS, très productifs, sont souvent choisis. Ils proposent des données architecturées autour de nombreuses tables reliées entre elles. Pour prolonger la durée de vie du site, il est nécessaire de récupérer les riches informations de l'ancien modèle. Mais lorsque les systèmes d'encodage ne sont pas compatibles, de mauvaises surprises surgissent. C'est ce que nous proposons de constater dans un premier temps. Il s'agit donc d'un fichier au format Sql résultant d'une extraction.
  • Cliquer droit sur le fichier téléchargé,
  • Dans le menu contextuel, choisir de l'ouvrir avec un éditeur tel que le Notepad ++,
Nous y trouvons des instructions Sql classiques. Elles permettent premièrement d'engager la création d'une table (CREATE TABLE) avec la définition et le typage de ses champs. Ensuite, c'est l'insertion des données (INSERT INTO) qui entre en jeu.

Code Sql pour insérer des données dans de nouvelles tables de base MySql

Cette table, comme son nom l'indique, archive des produits d'un magasin. Et pour pouvoir l'exploiter, nous devons la réceptionner dans une base de données MySql à créer. Pour ce faire, l'interface d'EasyPhp ou autre émulateur doit être affichée. Les deux serveurs, Http et Database doivent être démarrés.
  • Cliquer alors sur le bouton Open du module MySql Administration,
Nous accédons ainsi à l'interface de PhpMyAdmin.
  • Dans le volet de gauche, cliquer sur le lien Nouvelle base de données,
  • La nommer Magasin et choisir l'interclassement utf8_general_ci,
  • Puis, cliquer sur le bouton Créer,
Créer nouvelle base de données MySql pour importer des informations externes

La base de données magasin apparaît désormais listée dans le volet de gauche.
  • Cliquer sur son lien pour la sélectionner,
  • Puis, en haut de l'interface de PhpMyAdmin, cliquer sur l'onglet Importer,
  • Dans la section Fichier à importer, cliquer sur le bouton Parcourir,
  • Dans la boîte de dialogue qui suit, pointer dans le dossier de téléchargement,
  • Puis, double cliquer sur le fichier magasin_import.sql,
  • En bas de l'interface, cliquer alors sur le bouton Exécuter pour procéder à l'importation,
Le processus peut durer plusieurs dizaines de secondes. A l'issue, un message d'erreur apparaît. Nous pouvons l'ignorer. La mauvaise gestion des accents est en cause.
  • Dans le volet de gauche, déployer l'arborescence de la base de données magasin,
  • Puis, cliquer sur le lien de sa table products,
La table et ses données, issus du fichier Sql, ont finalement été importées. PhpMyAdmin annonce 453 enregistrements résultants.

Données externes importées dans table MySql avec anomalies à cause encodage accents

Si vous consultez le contenu du champ products_desc_1 notamment, vous constatez la présence d'anomalies. La lettre e avec accent grave est mal encodée. Comme elle n'est pas interprétée, elle est remplacée par un point d'interrogation. En conséquence, ces données ne sont pas exploitables. L'importation a effectivement échoué dans la mesure où les accents ne peuvent pas être restitués.

Même si vous tentez de nouveau le processus en modifiant certains paramétrages, le résultat serait le même. Vous pourriez par exemple essayer un interclassement pour les caractères latins à la création de la base de données. Vous pourriez définir un système d'encodage pour gérer les accents à l'importation (iso-****-x). A l'issue, la sentence serait la même.



Gérer les accents à l'importation
La technique consiste à corriger l'anomalie à la source. Il s'agit de convertir le fichier Sql au format Utf8. Il sera ainsi en conformité avec celui de la base de données. Rappelons-le, le format UTF8 est le format standard conseillé. Malgré les apparences, il simplifie grandement la gestion des caractères latins, dont les accents. Avant toute chose, nous devons commencer par supprimer la table créée lors du processus d'importation.
  • Dans le volet de gauche, cliquer sur le lien de la table products pour la désigner,
  • En haut de l'interface de PhpMyAdmin, cliquer sur l'onglet Opérations,
  • Dans la section Supprimer les données ou la table, cliquer sur le lien Supprimer la table,
  • Valider le message d'alerte qui suit pour confirmer la suppression,
Supprimer une table de base de données MySql à cause des accents

La base de données magasin subsiste mais son arborescence est vide désormais.
  • Afficher de nouveau le fichier magasin_import.sql dans l'éditeur Notepad,
  • En haut de l'éditeur, cliquer sur le menu Encodage,
  • Dans la liste, choisir Convertir en UTF-8,
Convertir encodage fichier SQL dans Notepad avant importation UTF8 pour gérer les accents

Le fichier est désormais converti dans un système a priori compatible. Si vous le parcourez, vous remarquez que les accents n'ont pas changé.
  • Enregistrer les modifications (CTRL + S),
  • Désormais, revenir sur l'interface de PhpMyAdmin,
  • Dans le volet de gauche, sélectionner la base de données MySql Magasin,
  • En haut de l'interface de PhpMyAdmin, cliquer sur l'onglet Importer,
  • Dans la section Fichier à importer, cliquer sur le bouton Parcourir,
  • Puis, double cliquer sur le fichier magasin_import.sql,
  • Enfin, en bas de l'interface, cliquer sur le bouton Exécuter pour procéder à l'importation,
Là encore, le processus peut durer plusieurs secondes, mais il est plus rapide que le précédent. La gestion des accents n'est plus un problème. Et d'ailleurs, à l'issue du traitement, plus aucun message d'erreur ne s'affiche. Au contraire, un message de succès confirme le bon déroulement de l'opération.
  • Dans le volet de gauche, cliquer sur le lien de la table Products pour afficher son contenu,
Importation MySql réussie avec gestion des accents correctement encodés

Cette fois, en consultant le contenu du champ products_desc_1, vous remarquez que les accents ont parfaitement été gérés à l'importation, grâce à la conversion au format UTF-8 réalisée en amont. Il subsiste quelques points d'interrogation dans cette table. Ils ne traduisent pas un souci d'encodage. Ils existaient déjà dans le fichier d'origine, sans doute à cause d'une exportation mal maîtrisée.



Gérer les accents à l'exportation
Le problème se pose aussi dans l'autre sens. Nous souhaiterions exporter ces données au format universel Csv. De cette manière, il est possible de réceptionner les informations dans des colonnes différentes d'une feuille Excel, grâce aux séparateurs de liste. Nous allons l'apprendre à nos dépends, bien que les accents soient désormais parfaitement encodés, le résultat de l'exportation peut surprendre.
  • Dans le volet de gauche, sélectionner la table products,
  • En haut de l'interface de PhpMyAdmin, cliquer sur l'onglet Exporter,
  • Dans la section Format, choisir le modèle CSV avec la liste déroulante,
  • Puis, en bas de l'interface, cliquer sur le bouton Exécuter,
  • Dans la boîte de dialogue qui suit, choisir d'enregistrer le fichier dans le dossier de téléchargement en conservant le nom proposé par défaut,
  • Dans le dossier de téléchargement, double cliquer sur le fichier résultant pour l'ouvrir dans Excel,
Exportation MySql dans Excel avec problèmes accents mal encodés

En effet, les accents ne sont pas interprétés rendant difficile la lecture des informations.
  • Revenir dans l'interface de PhpMyAdmin,
  • Dans la section Méthode d'exportation, cocher la case Personnalisée...,
  • Dans la section Sortie, choisir le jeu de caractères iso-8859-1 avec la liste déroulante,
Réglages pour exporter données MySql avec gestion accents pour importer dans Excel

Il s'agit d'un système d'encodage pour les caractères latins.
  • Dans la colonne Colonnes séparées par de la section Options spécifiques au format, remplacer la virgule par un point-virgule (;),
Il s'agit en effet du séparateur de liste le plus conventionnel. C'est lui qui permet de délimiter les colonnes sans ambiguïté.
  • Enfin, cliquer sur le bouton Exécuter,
  • Puis enregistrer le fichier d'exportation sous le même nom pour écraser le précédent,
Remarque : Pour écraser un fichier, il faut s'assurer qu'il ne soit pas en cours d'exécution. Il est donc nécessaire de fermer Excel avant toute chose.
  • Dans le dossier de téléchargement, double cliquer sur le fichier products.csv pour l'ouvrir dans Excel,
Les changements sont saisissants. Tout d'abord, grâce au séparateur de liste ajusté, les éléments apparaissent bien dans leurs colonnes respectives. De plus, si vous consultez le contenu du descriptif, vous remarquez que les accents sont cette fois parfaitement gérés.

Importation de données MySql dans Excel avec gestion des accents

Une fois encore, les points d'interrogation subsistant étaient déjà présents dans le fichier source. Nous avons donc apporté les solutions pour gérer les accents à l'importation et à l'exportation.

 
Sur Facebook
Sur G+
Sur Youtube
Les livres
Contact
Mentions légales



Partager la formation
Partager sur Facebook
Partager sur Google+
Partager sur Twitter
Partager sur LinkedIn