Accents
Résolu/Fermé
Utilisateur anonyme
-
9 juin 2014 à 13:22
mpmp93 Messages postés 6648 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 - 9 juin 2014 à 21:38
mpmp93 Messages postés 6648 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 - 9 juin 2014 à 21:38
A voir également:
- Accents
- Accents sur majuscules word - Guide
- Pourquoi les accents circonflexes disparaissent dans mes messages ✓ - Forum HTC
- Accents espagnols clavier sans pavé numérique - Forum Windows
- Comment faire les accents sur le clavier qwerty ✓ - Forum Windows
- Mon clavier ne fait plus les accents ✓ - Forum Clavier
2 réponses
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 228
9 juin 2014 à 13:56
9 juin 2014 à 13:56
'lut, c'est du à l'interclassement: latin1_swedish_ci peut gérer les accents, mais seulement certains.
Pour résoudre la plupart des problèmes d'accents, il faut arrêter de vivre dans le passer et passer à autre chose que de l'ASCII étendu (latin1 par ex) pour choisir l'Unicode, qui gère tous les accents et toutes les langues du monde. Et l'encodage le plus populaire de l'Unicode c'est l'UTF-8; voici comment passer une base en UTF-8:
Coté PHP, si tu utilises les APIs
Pour PDO, utilise le paramètre
Si tu fais du traitement sur le contenu du textarea avec PHP, remplace toutes tes foncions de traitement de texte dans ton code par leur équivalent
Pour résoudre la plupart des problèmes d'accents, il faut arrêter de vivre dans le passer et passer à autre chose que de l'ASCII étendu (latin1 par ex) pour choisir l'Unicode, qui gère tous les accents et toutes les langues du monde. Et l'encodage le plus populaire de l'Unicode c'est l'UTF-8; voici comment passer une base en UTF-8:
ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci; ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;Là ou
databasenameest le nom de ta BDD, et
tablenamecelui de la table à convertir.
Coté PHP, si tu utilises les APIs
mysql_*(qui sont obsolètes, il faut passer à PDO), utilises
mysql_set_charset('utf8').
Pour PDO, utilise le paramètre
charset=utf-8lors de la connexion.
Si tu fais du traitement sur le contenu du textarea avec PHP, remplace toutes tes foncions de traitement de texte dans ton code par leur équivalent
mb_*qui gère l'UTF-8.
Utilisateur anonyme
Modifié par kiloo120 le 9/06/2014 à 14:38
Modifié par kiloo120 le 9/06/2014 à 14:38
Je te remercie de ta réponse très rapide, mais du coup, je suis tenté de répondre alors que je n'ai pas encore exploité à 100% ta réponse.
Je m'excuse donc à l'avance.
Ce que j'ai essayé pour le moment : convertir la base et la table grâce à la commande SQL que tu m'as indiqué. Aucun effet.
Je n'utilise pas PDO. Un jour je changerai mais pour le moment je n'ai pas envie de tout changer. Ainsi j'ai ensuite utilisé "mysql_set_charset('utf8')". Résultat : le TEXT que je n'arrivais pas à afficher s'affiche même s'il contient des accents mais en revanche, tous les accents issus des requêtes SQL sont transformés en symboles du type "è" ou "é". C'est problématique n'est-ce pas ?
Comment cela se fait-il ?
Je te remercie.
PS : J'ai peu cherché mais je ne suis pas sûr d'avoir compris ce que tu me disais vis-à-vis de mb_* ! Par "traitement sur le contenu du textarea avec PHP" tu veux parler de
Je passe sûrement pour un idiot mais je suis loin de maîtriser tout cela.
Je te remercie énormément,
K
Je m'excuse donc à l'avance.
Ce que j'ai essayé pour le moment : convertir la base et la table grâce à la commande SQL que tu m'as indiqué. Aucun effet.
Je n'utilise pas PDO. Un jour je changerai mais pour le moment je n'ai pas envie de tout changer. Ainsi j'ai ensuite utilisé "mysql_set_charset('utf8')". Résultat : le TEXT que je n'arrivais pas à afficher s'affiche même s'il contient des accents mais en revanche, tous les accents issus des requêtes SQL sont transformés en symboles du type "è" ou "é". C'est problématique n'est-ce pas ?
Comment cela se fait-il ?
Je te remercie.
PS : J'ai peu cherché mais je ne suis pas sûr d'avoir compris ce que tu me disais vis-à-vis de mb_* ! Par "traitement sur le contenu du textarea avec PHP" tu veux parler de
$contenu = addslashes($_POST['contenu ']);puis de
$contenu = nl2br(htmlspecialchars(stripslashes($donnees['contenu '])));?
Je passe sûrement pour un idiot mais je suis loin de maîtriser tout cela.
Je te remercie énormément,
K
mpmp93
Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 339
9 juin 2014 à 15:19
9 juin 2014 à 15:19
Bonjour,
Pour être vraiment tranquille, il faut que toute la chaîne de traitement soit en UTF_8:
https://html5.immo-scope.com/article/general_applisFullUtf8
A+
Pour être vraiment tranquille, il faut que toute la chaîne de traitement soit en UTF_8:
https://html5.immo-scope.com/article/general_applisFullUtf8
A+
Bon, j'imagine que là je dévie complètement du sujet et qu'il existe déjà beaucoup d'endroits où je pourrais me documenter sur l'encodage, néanmoins après consultation du lien que tu as envoyé, je me suis complètement perdu dans ces histoires.
Jusqu'alors j'avais :
Lorsque j'utilise cet encodage les accents du texte "normal" fonctionnent mais ceux qui passent pas la base de données sont transformés en é...
Lorsque je change la balise meta pour :
et que j'encode mes fichiers en UFT sur Notepad, alors les accents qui passent par la base données marchent mais pas les accents des textes "classiques" qui sont alors transformés en losanges avec un point d'interrogation.
Actuellement Notepad encode par défaut en "ANSI".
Je vous remercie infiniment pour le temps que vous m'accordez,
Très cordialement,
K
Jusqu'alors j'avais :
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
Lorsque j'utilise cet encodage les accents du texte "normal" fonctionnent mais ceux qui passent pas la base de données sont transformés en é...
Lorsque je change la balise meta pour :
<meta charset="UTF-8">
et que j'encode mes fichiers en UFT sur Notepad, alors les accents qui passent par la base données marchent mais pas les accents des textes "classiques" qui sont alors transformés en losanges avec un point d'interrogation.
Actuellement Notepad encode par défaut en "ANSI".
Je vous remercie infiniment pour le temps que vous m'accordez,
Très cordialement,
K
mpmp93
Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 339
9 juin 2014 à 21:38
9 juin 2014 à 21:38
Utiliser PSPAD ou NetBEANS.... L eproblème d'encodage des fichiers source sera résolu.