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

Pascal_22 Messages postés 559 Statut Membre -  
JooS Messages postés 2705 Statut Membre -
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
A voir également:

7 réponses

Elsyfiryos Messages postés 90 Statut Membre 11
 
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 591 Statut Membre 49
 
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
 
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 559 Statut Membre 54
 
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
 
<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 559 Statut Membre 54
 
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
 
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 559 Statut Membre 54
 
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 2705 Statut Membre 228
 
Salut, on peut savoir pourquoi tu migre vers l'utf-8, parce qu'il faut quand même une bonne raison !!!
0