PHP accents s'affiche et d'autre non..??

Fermé
Pascal_22 Messages postés 534 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 29 août 2014 - 31 août 2012 à 20:03
JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 - 7 sept. 2012 à 01:32
Bonjour,


Bonjour, je suis en train de faire un nouveau design sur mon site et on m'a dit de mettre le la meta tag suivant:
<meta charset="utf-8">


Cependant, j'Ai eu a modifier certain page pour changer les accent en leur équivalent html é=& eacute ; ....

et a changer aussi les accent dans ma base de donnée MySQL....

Cependant, sur une page recherche: il y a des accent qui fonctionne et d'autre non...
ceux entré dans ma DB:é à è ... ne s'affiche pas correctement.. ils sont remplacé par des points d'intérpogation..(??)


Comment géré les 2 type d'encodage.. devrais-je faire la tournée de tout les champs de ma BD pour enlever les caractère accentuer??
ESt-qu'il y a une meilleur pratique...?

MErci et bonne journée!
Pascal

7 réponses

Elsyfiryos Messages postés 83 Date d'inscription dimanche 25 avril 2010 Statut Membre Dernière intervention 12 septembre 2012 11
3 sept. 2012 à 03:02
Salut

lorsque tu utilise la PDO:

$hote = 'localhost';
$nom_bd = 'mabdd';
$utilisateur= 'root'
$mdp= '';

$bdd = new PDO('mysql:host='.$hote.';dbname='.$nom_bd, $utilisateur, $mdp, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); 


Bien sur, si tu ne travail pas en local, utilise les bon logs pour la BDD :).
3
rjl Messages postés 543 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 25 mai 2019 49
31 août 2012 à 23:08
Bonsoir Pascal,
Je ne suis pas trop doué mais, il faut se lancer !
En premier lieu, travaille tu en UTF-8 ou en ISO-8859-1 ?
Je te conseille UTF-8 plus porteur.
Dans tes pages HTML, commence par ajouter un meta, style : <meta charset="UTF-8"> dans le Head.
Dans un programme comme Notepad++, vérifie l'encodage : encodes en UTF-8 (sans BOM).
Si tu as une base de données, style MySQL, assures toi que les champs texte (Structure) sont bien en UTF-8 (par exemple utf8_unicode_ci).
Enfin, en dernier recours (que je connaisse), reste mb_internal_encoding("utf-8") en PHP mais j'en connais mal l'impact et aussi utf8_decode().
Bonne chance ça peut solutionner tes problèmes mais, il faudra peut-être que quelqu'un d'autre te secoure si c'est trop sévère.
@+ RJL2831
0
Utilisateur anonyme
31 août 2012 à 23:13
Et il manque encore l'indication à mysql de travailler en utf8. La façon de le faire dépend de si tu utilises PDO ou pas.

Mais si tu as commencé à bricoler ta base sans trop savoir ce que tu faisais, qu'une partie est déjà encodée en utf-8 et l'autre non, il va bien falloir bricoler encore pour remettre tout le monde d'accord
0
Pascal_22 Messages postés 534 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 29 août 2014 54
6 sept. 2012 à 19:12
Wow merci pour les bonnes infos...

Oui, j'ai bel et bien <meta charset="UTF-8"> dans ma head.

En suite je n'utilise pas la PDO..... y a t'il un avantage a l'utiliser.. je connais pas!

Aussi je ne savais pas qu'on pouvait modifier l'encodage de notepad++... c'est notepad++ que j'utilise,

Tout mes champs sont en latin1_swedish....

cela cause tu problème!!

MErci de votre réponse!!

PAscal
0
Utilisateur anonyme
6 sept. 2012 à 22:12
<meta charset="UTF-8">
est incompatible avec
Tout mes champs sont en latin1_swedish

Étudie les avantages et les inconvénients des deux encodages et fais ton choix, mais n'essaye pas de mélanger les deux.

UTF-8 est infiniment plus riche, mais un peu plus délicat à mettre en oeuvre, les fonctions de base de php ne sont pas faites pour et il faut toujours penser à utiliser les fonctions spécialement adaptées, ou à mettre le paramètre optionnel dont on se passe quand on fait tout en latin (ISO).

En ce qui concerne le PDO, oui, c'est mieux, ça peut aider à éviter des erreurs et à gagner en efficacité dans l'exécution d'un script.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pascal_22 Messages postés 534 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 29 août 2014 54
6 sept. 2012 à 22:17
Ok merci pour les infos...

cependant... moi de mon coté, je préfère UTF8...

Je ait quoi pour les champs... je me connect sur phpmyadmin et j'édite tous les champs de mes table(oulala il en a gros) et je met utf8....?

Dois-je faire une manoeauvre avant de faire cela? et pour mon text déjà dans les champs...... ca va t'il déranger...? les accent et tout seront t'il correct?

MErci!!

PAscal
0
Utilisateur anonyme
6 sept. 2012 à 22:47
Dans notepad++, fait bien attention à enregistrer tes fichiers en utf8 SANS BOM
Il faut mettre toutes tes tables et leurs champs en utf-8, par exemple utf8_general_ci
Suis les indications données par rjl
Aussitôt après la connexion à la base de données, ajoute un mysql_query ("SET NAMES 'UTF8'");
Utilise partout les fonctions mb_string (mb_strlen, mb_substr ...) au lieu des fonctions simples (strlen, substr...) pour manipuler les chaînes

Je ne sais pas ce qui va se passer quand tu vas changer les collation de tes tables dans mysql, pas évident que ça se passe bien pour les caractères non ASCII...
0
Pascal_22 Messages postés 534 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 29 août 2014 54
6 sept. 2012 à 22:58
wow ok!!! je vais faire le test dans une bd test!!!!

pour les mb_strlen...

C'est qu'il converti les accent html en leur équivalent---> é en é

est-ce ça?

MErci et bonne soirée!

PAscal
0
JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
7 sept. 2012 à 01:32
Salut, on peut savoir pourquoi tu migre vers l'utf-8, parce qu'il faut quand même une bonne raison !!!
0