Je viens demander votre aide car là je me noie complétement dans ma base Mysql où j'ai réussi à opérer un mélange que je n'arrive pas à démêler.
Tout d'abord pour poser la situation, il faut dire que je n'y connais rien en Base SQL et que j'ai cherché différentes solution qui n'ont pas fonctionné (voire ont aggravé le problème )
J'ai besoin de faire un moteur de recherche pour mon site, et celui-ci doit être insensible à la casse et aux accents. Facile me direz-vous, on choisi un interclassement adapté et le tour est joué. C'est là que ça commence à me poser soucis notamment parce que j'ai mal codé les choses au départ.
Mais dans phpmyadmin, ma base de données est en latin1_swedish_ci (enfin celle de mon site, parce que ma base de test, à force de tentatives diverses et variées est en un peu tout et n'importe quoi ). Donc déjà ça ne peut pas coller...
Il en résulte que si sur mon site l'affichage est normal (je rempli la BDD avec une page du site), dans ma BDD ça ressemble plutôt à ça :
Et du coup impossible de faire des recherches insensibles aux accents là dessus.
Je comprend bien que dans la base, les données sont formatées en utf8 et que la lecture se fait en latin1....
Ma question est donc la suivante : AU SECOURS !!! Comment je peux faire pour tout remettre d'aplomb ?
J'aimerais tout convertir dans un jeux de caractères et interclassement insensible casse/accents.
Tout doit être au même encodage (dans ce cas-ci, UTF-8). L'affichage de ta page HTML (balise meta), ton IDE (Netbeans, Eclipse...) ou éditeur de texte (Notepad++...), ta base de données (colonnes textes donc) et la connexion à ta base de données.
Visiblement, tu réussis à écrire correctement tes chaînes de caractères, mais tu n'utilises pas le bon encodage pour les lire. Vérifie donc ces points et ça devrait mieux allé.
Ma balise meta est à priori bien en utf8, la connexion à la BDD ne spécifie pas d'encodage (je vais regarder mais je pense que l'ajout d'une ligne genre SET NAMES UTF8 devrait faire l'affaire).
Il s'agissait bien d'un problème d'enregistrement puisque l'ajout d'une commande
mysql_query("SET NAMES 'utf8'");
a réglé le problème pour les nouveaux enregistrement.
J'ai également utilisé la fonction ALTER pour modifier l'interclassement.
Reste les anciens enregistrements... Y a t'il une solution plus simple que de faire un code qui lirait les données et les réenregistrerait proprement ?
[SQL] Jeux de caractères, interclassement et conversion
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
a réglé le problème pour les nouveaux enregistrement.