1633 sujets
Formats, encodage, internationalisation, XML
Bonjour,
Que veux-tu dire par «tronqué»? Tu veux dire que si tu envoies un «é», la moitié gauche de la lettre passe mais pas la moitié droite?
Par ailleurs, il faudrait que l'on sache:
- Quel est le codage de caractères indiqué pour les tables et colonnes de ta base de données? En général, à part lors de la création d'une table, tu ne peux voir que l'interclassement et pas le codage. Mais ça va, car l'interclassement indique aussi le codage ("utf8_general_ci" et "utf8_slovak_ci" sont deux interclassements différents, mais tous deux indiquent un codage UTF-8).
- Quel est le codage utilisé par les navigateurs lorsqu'ils affichent ta page? Dans Firefox, tu peux le voir en chargeant la page et en allant dans le menu Affichage > Encodage des caractères. Normalement le bon "charset" devrait être déclaré à la fois dans ton code HTML (via une balise META) et dans les en-têtes HTTP (avec l'en-tête Content-Type).
Bien sûr les deux codages en question doivent correspondre. Il ne faut pas avoir de l'ISO-8859-1 (dit aussi "latin1") d'un côté et de l'UTF-8 de l'autre.
Enfin, il faut vérifier que la connexion avec MySQL ouverte par ton code côté serveur (du PHP ou autre) utilise le même codage. Sinon MySQL risque de transcoder tes données à la volée lorsque tu en insère, en modifie ou en sélectionne. Voir du côté de l'instruction MySQL SET NAMES.
Que veux-tu dire par «tronqué»? Tu veux dire que si tu envoies un «é», la moitié gauche de la lettre passe mais pas la moitié droite?
Par ailleurs, il faudrait que l'on sache:
- Quel est le codage de caractères indiqué pour les tables et colonnes de ta base de données? En général, à part lors de la création d'une table, tu ne peux voir que l'interclassement et pas le codage. Mais ça va, car l'interclassement indique aussi le codage ("utf8_general_ci" et "utf8_slovak_ci" sont deux interclassements différents, mais tous deux indiquent un codage UTF-8).
- Quel est le codage utilisé par les navigateurs lorsqu'ils affichent ta page? Dans Firefox, tu peux le voir en chargeant la page et en allant dans le menu Affichage > Encodage des caractères. Normalement le bon "charset" devrait être déclaré à la fois dans ton code HTML (via une balise META) et dans les en-têtes HTTP (avec l'en-tête Content-Type).
Bien sûr les deux codages en question doivent correspondre. Il ne faut pas avoir de l'ISO-8859-1 (dit aussi "latin1") d'un côté et de l'UTF-8 de l'autre.
Enfin, il faut vérifier que la connexion avec MySQL ouverte par ton code côté serveur (du PHP ou autre) utilise le même codage. Sinon MySQL risque de transcoder tes données à la volée lorsque tu en insère, en modifie ou en sélectionne. Voir du côté de l'instruction MySQL SET NAMES.
Bonjour,
Voici quelques précisions:
le à devient Ã
et le é devient é par exemple
Tout est en utf8_unicode_ci dans ma base.
J'ai une instruction mysql_query('SET NAMES UTF8')
et en-tête <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Dans Firefox l'encodage des caractères est en unicode (UTF-8)
Le problème ne se pose que de la page vers la base et non l'inverse (toutes les données bien affichées dans la base s'affiche bien dans la page)
Modifié par whynote (03 Nov 2010 - 18:58)
Voici quelques précisions:
le à devient Ã
et le é devient é par exemple
Tout est en utf8_unicode_ci dans ma base.
J'ai une instruction mysql_query('SET NAMES UTF8')
et en-tête <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Dans Firefox l'encodage des caractères est en unicode (UTF-8)
Le problème ne se pose que de la page vers la base et non l'inverse (toutes les données bien affichées dans la base s'affiche bien dans la page)
Modifié par whynote (03 Nov 2010 - 18:58)
La page du formulaire est bien en UTF-8?
L'outil que tu utilises pour consulter la base de données aussi?
Si tout est bon de ce côté, je soupçonne une fonction PHP (tu utilises PHP?) qui travaille en ISO-8859-1 par défaut, ou bien un utf8_encode ou utf8_decode inutile quelque part dans le code.
Mettons que la base est bien en UTF-8 (y compris les tables, les colonnes et les champs concernés... à vérifier). Si tu utilises phpMyAdmin ou un outil similaire, et que cet outil est bien configuré en UTF-8 (affichage des pages et connexion à la base), est-ce que tu peux créer un enregistrement et entrer directement des données «saines»? Est-ce qu'elles apparaissent correctement sur le site ensuite?
L'outil que tu utilises pour consulter la base de données aussi?
Si tout est bon de ce côté, je soupçonne une fonction PHP (tu utilises PHP?) qui travaille en ISO-8859-1 par défaut, ou bien un utf8_encode ou utf8_decode inutile quelque part dans le code.
Mettons que la base est bien en UTF-8 (y compris les tables, les colonnes et les champs concernés... à vérifier). Si tu utilises phpMyAdmin ou un outil similaire, et que cet outil est bien configuré en UTF-8 (affichage des pages et connexion à la base), est-ce que tu peux créer un enregistrement et entrer directement des données «saines»? Est-ce qu'elles apparaissent correctement sur le site ensuite?