Bonsoir,

J'ai un petit problème d'encodage Smiley rolleyes , j'utilise un formulaire que je traite en ajax, je rentre les données dans ma base de données puis les réaffichent sur mon site. Mes pages sont codées en UTF-8 ainsi que ma base de données, je n'ai aucun problème avec le site, l'encodage fonctionne très bien pendant et après le traitement des données, par contre ce n'est pas le cas de la base de données, je me retrouve avec ces fameux "é" à la place des "é" Smiley sweatdrop ... Cependant, d'après ce que j'ai compris il ne devrait pas y avoir de problème, et je n'en ai jamais eu avant d'ailleurs... J'ai lu que cela pouvait provenir de la configuration de la base de données... Comment puis-je corriger ça? Je travaille avec une base de données Mysql et je n'ai pas accès au fichier de config... Si quelqu'un a une idée...

Merci d'avance
Modifié par Elixis (10 May 2008 - 07:35)
Quand tu crée une base de données mysql pour être en utf8 il faut faire quelque chose du style


create database NOM_DE_LA_BASE default character set ‘utf8’ default collate ‘utf8_general_ci’;


si cela n'a pas été fait tu es peut être dans un autre format dans tes tables par exemple. En effet avec mysql tu peux préciser un encode pour la table, puis un encodage différent pour les tables et même un encodage différent pour les colonnes.
Si j'étais toi j'utiliserais l'outil a ma dispotion (phpmyadmin ou autre) pour vérifier les encodages.

Il arrive souvent que l'on pense que l'on est en utf8 alors qu'en fait non
J'aurais aimé que ce soit ça mais j'ai bien vérifié le jeu de caractères pour MySQL, l'interclassement pour la connexion, pour la base, pour les tables, pour les champs... tout est en UTF-8...
Bonjour,

Parmi les suspects habituels:
- le script qui traite et écrit les données dans la base (gare aux fonctions qui gèrent mal l'UTF-8);
- le script qui récupère et traite les données de la base (idem);
- les indications d'encodage du côté de la base de données (qui ne reflètent pas forcément la nature des données qu'on y trouve), notamment celles des tables et éventuellement des colonnes;
- la connexion entre les scripts et le serveur MySQL.

Est-ce que tu maitrises ces différents points? Tu as pu faire des tests, par exemple pour vérifier que la connexion se fait bien en UTF-8 (par exemple en utilisant la requête "SET NAMES utf8")? Tu as vérifié si les données en base étaient bien correctes?
Cette fois c'est bon, ça fonctionne avec un "Set names 'utf8'"...
J'avais fait toute les vérifications nécessaires mise à part utiliser cette instruction, j"en avais juste entendu parler, mais je ne savais pas quel était son intérêt et comment s'en servir...
Je m'en souviendrai et aussi qu'il ne faut pas trop se fier au indications d'interclassement des tables Smiley cligne .
Merci a vous... Smiley lol
Modifié par Elixis (10 May 2008 - 07:35)
Elixis a écrit :
Je m'en souviendrai et aussi qu'il ne faut pas trop se fier au indications d'interclassement des tables Smiley cligne .

Ici ce n'était pas les indications d'interclassement des tables qui posaient problème, vu qu'elles étaient correctes, mais bien l'encodage par défaut pour les connexions MySQL. La quasi-totalité des installations de MySQL ont un encodage par défaut pour les connexions client-serveur en latin1 (ISO-8859-1), et dans ce cas il faut soit configurer le serveur pour avoir des connexions par défaut en UTF-8, soit déclarer la connexion (juste après l'avoir ouverte) comme étant en UTF-8 avec "SET NAMES utf8".

Cela vaut aussi pour d'autres encodages comme par exemple SHIFT-JIS, bien entendu.