caractéres spéciaux

Répondre
subrally
le 29/07/2009 à 16:17
subrally
en faite j'ai remarqué que j etais en php4 qd il a pas reconnue la fonction mysql_set_charset et qu'il connaissais pas

j'ai un peu regarder sur leur site et pour utilisé php6 j'dois renommer tous mes fichier en .php6 :/
subrally
le 29/07/2009 à 19:06
subrally
revenons à mon probléme :)

j'ai fait un peu de nettoyage dans mon code et tous les caractére sont entré correctement dans la BDD mais...

lors de l'affichage tous est foireux avec la fonction htmlentities() il me remet tous en ISO mais uniquement lors de l'affichage :/
subrally
le 01/08/2009 à 16:28
subrally
mon problémé a été résolue avec la fonction ut8_decode()

j'ai le meme soucis avec la fonction mail($email,$sujet,$message,$headers)
quand le mail est envoyé, les caractére spéciaux ont été supprimé

pourtant mon headers:
$headers ='From: "blabla"<bla@bla.com>'."\n";
$headers .='Content-Type: text/plain; charset="utf-8"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';

que faire?
LupusMic
le 01/08/2009 à 17:55
LupusMic
(subrally) Il faudrait que tu arrête de parler de caractères spéciaux. Habituellement, on désigne par cette locution les caractères qui ont un comportement magique, et qui sont en général invisible. Tels que le retour charriot ou la fin de ligne.

Et maintenant, tu devrais te poser, prendre une feuille et un crayon. Représente les flux d'échange de données dans une application PHP.
Les différents éléments qu'on peut considérer sont :
- le script PHP
- les variables PHP
- le client web
- le serveur de base données
- le client de base données
- les « variales » de la base de données
- le script SQL (potentiellement issu de ton script)
Je dois en oublier, mais je pense qu'on a l'essentiel. Chacune de ces entités peuvent utiliser un encodage différent.

Tu peux constater que le problème est complexe, et que le hasard n'est donc pas de mise dans la résolution des problèmes liés aux encodages. Il faut que tu saches quels sont les encodages utilisés, et gérer de manière éclairée.

Tu pourrais choisir de tout mettre en UTF-8. Si dans un premier temps c'est acceptable, si tu ne contrôle jamais les encodages, tu risques d'avoir des bogues, voir des trous de sécurité, très difficiles à traquer et réduire.

C'est, à mon sens, l'une des plus grandes difficultés dans le développement Web.

Une fois que tu auras compris ça, le comportement des chaînes ne te surprendra plus !
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LA GLOBULE
le 02/08/2009 à 13:53
LA GLOBULE
mon problémé a été résolue avec la fonction ut8_decode()


Tu ne l'as pas résolu : tu as changé le charset d'une chaine de caractères en la passant en ISO-8859-1. Donc ton application n'est plus UTF-8 "compliant".

A priori, tous les caractères que tu affiches (en langue française) sont disponibles dans le charset ISO-8859-1, donc tu "penses avoir résolu" le problème, mais il n'en est rien.
Imagine un caractère qui n'existe pas dans le charset ISO-8859-1. Que va faire ton utf8_decode ?

En gros, je pense comme LupusMic : il faut choisir un charset, savoir pourquoi on le choisit, et surtout s'y tenir ! Et ll ne faut surtout pas mélanger les charsets, c'est source de bug.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours