A voir également:
- Mysql caractères spéciaux utf8
- Caractères spéciaux clavier azerty - Guide
- Caractere speciaux - Guide
- Caractères spéciaux mac - Guide
- Caractères ascii - Guide
- Caractères spéciaux msn ✓ - Forum MSN / WLM
2 réponses
mpmp93
Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 339
12 mai 2011 à 15:02
12 mai 2011 à 15:02
Bonjour,
C'est un problème d'encodage des données entre le formulaire de saisie en HTML et celui de la base de données.
Sou PhpMyAdmin, ouvrir une table, regarder sa structure, il y a une colonne 'interclassement', on trouve par exemple: utf8_unicode_ci ou latin1_general_ci...
Le jeu utf8_general_ci accepte TOUS les encodages y compris les caractères russes, japonais, chinois, arabes, etc... et évidement accentués français.
En amont, il faut regarder le code HTML de la page, le template minimal est le suivant:
en gras la ligne META qui force l'encodage en UTF8.
Ensuite, au moment d'ouvrir la base de données en mySql:
La dernière ligne est TRES IMPORTANTE. C'est elle qui force mySql à communiquer en UTF8 avec PHP tout au long de la chaîne de traitement.
A partir de ce moment, vous n'aurez plus aucun souci pour entrer ou sortir les caractères accentués dans la base de données, ainsi que tous les caractères de tous les alphabets existants, hyéroglyphes inclus...
A+
C'est un problème d'encodage des données entre le formulaire de saisie en HTML et celui de la base de données.
Sou PhpMyAdmin, ouvrir une table, regarder sa structure, il y a une colonne 'interclassement', on trouve par exemple: utf8_unicode_ci ou latin1_general_ci...
Le jeu utf8_general_ci accepte TOUS les encodages y compris les caractères russes, japonais, chinois, arabes, etc... et évidement accentués français.
En amont, il faut regarder le code HTML de la page, le template minimal est le suivant:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Titre de ma page</title> </head> <body> <p>Bonjour tout le monde</p> </body> </html>
en gras la ligne META qui force l'encodage en UTF8.
Ensuite, au moment d'ouvrir la base de données en mySql:
$db_selected = mysql_select_db($parameters->basename, $connection); if (!$db_selected) { die('Impossible d\'utiliser la base : ' . mysql_error()); } mysql_query("SET NAMES 'utf8'");
La dernière ligne est TRES IMPORTANTE. C'est elle qui force mySql à communiquer en UTF8 avec PHP tout au long de la chaîne de traitement.
A partir de ce moment, vous n'aurez plus aucun souci pour entrer ou sortir les caractères accentués dans la base de données, ainsi que tous les caractères de tous les alphabets existants, hyéroglyphes inclus...
A+
1 sept. 2011 à 14:04