Problème avec les accents (résolu) mais aussi avec les ' (pas résolu)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème avec les accents (résolu) mais aussi avec les ' (pas résolu)

par TiFred » 13 oct. 2008, 10:46

Est-ce que qq'un a une idée SVP ?

Merci

par TiFred » 09 oct. 2008, 21:53

Merci !

C'est bon pour les accents.
En revanche pb avec les '

Dans mon post je tape T'iFred il me ressort T",,0,0,,,,
En fait c'est déjà ça dans le lien
Voici un bout du post
echo "<form method='post' action='validinscrit.php>" ;
echo "<div><br />Entrez votre nom : " ;
echo "<input type='text' name='nom' size='30' value='".@$_POST['nom']."' maxlength='30' /><br />" ;
echo "Entrez votre prénom : " ;
echo "<input type='text' name='prenom' size='30' value='".@$_POST['prenom']."' maxlength='30' /><br />" ;
et de nouveau le message que je m'envoie avec le lien
$message2 = "Pour valider l'inscription cliquer <a class='liens' href='http://www.[i]xxxx[/i].fr/inscription.php?reprendreq=".AjoutSlash(str_replace(' ','%20',$_GET['reprendreq']))."&nom=".AjoutSlash($_POST['nom'])."&prenom=".AjoutSlash($_POST['prenom'])."&pseudo=".AjoutSlash($_POST['pseudo'])."&password=".$_POST['password']."&equipe=".AjoutSlash(str_replace(' ','%20',$_POST['equipe']))."&pays=".$_POST['pays']."&etat=".$_POST['etat']."&mail=".$_POST['mail']."&motiv=".AjoutSlash(str_replace(' ','%20',$_POST['motiv']))."&ip=".getenv("REMOTE_ADDR")."'>là</a>" ;

par AB » 03 oct. 2008, 17:11

Ben oui, si tu utilise le charset iso-8859-1 par ailleurs. Il faut que les charset déclarés soient identiques dans toute ta page sinon tu risque des conflits.

par TiFred » 03 oct. 2008, 10:52

Je viens de m'apercevoir que dans ma fonction EnvoieMail_Html, j'ai mis charset=\"US-ASCII\"

C'est bon ça ?
Ne faudrait-il pas que je mette charset=\"iso-8859-1\" ?
Merci

par Berzemus » 02 oct. 2008, 23:22

(pour répondre à AB, un peu en dehors du sujet, pardon)
Avant il me semble que les transferts n'étaient pas "8-bit safe". Mais j'ai oublié de quand date "avant", quelque part entre '69 et aujourd'hui. Y'a des chances que ce ne soit plus le cas. Sauf pour le minitel, ou il faut encoder en morse.

par AB » 02 oct. 2008, 23:17

En base64, il me semble.
J'crois pas que cela soit nécessaire.
Cela passe sur mes quatre messagerie avec
$headers .= " Content-Transfer-Encoding: 8bit\n\n";
Je réserve la base64 pour l'encodage de fichiers joints...

Y'a t-il parfois des pb avec un encodage 8 bits et l'UTF8 ???

par TiFred » 02 oct. 2008, 23:13

Je vois pas bien le rapport mais tu peux spécifier l'entête que tu veux dans les headers

exemple
$headers .= "Content-type: text/plain; charset=UTF-8\n\n"
Sinon tu as lu mon message précédent ?
$entete2 = 'MIME-Version: 1.0' . "\r\n" ;
$entete2 .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$entete2 .= "From: [i]moi[/i]\n" ;
$entete2 .= "Reply-to: [i]moi[/i]" ;
if (substr(mysqli_get_host_info($db),0,9)<>'localhost') EnvoieMail_Html('toto' , '[Ebasket] Inscription de '.$_POST['pseudo'], $message2, 'moi' , 'moi', $entete2) ;
ça n'a pas l'air d'être mieux ?

par Berzemus » 02 oct. 2008, 22:58

En base64, il me semble.

par AB » 02 oct. 2008, 22:58

Je vois pas bien le rapport mais tu peux spécifier l'entête que tu veux dans les headers

exemple
$headers .= "Content-type: text/plain; charset=UTF-8\n\n"
Sinon tu as lu mon message précédent ?

par TiFred » 02 oct. 2008, 22:48

Un mail est codé comment ???

par AB » 02 oct. 2008, 22:45

Si c'est possible le mieux serait que tu utilises le même charset à tous les niveaux (bdd php et html)

Si tu utilises utf-8, bien penser à mettre

Code : Tout sélectionner

header('Content-type: text/html; charset=UTF-8');
au début de ton code php ainsi que

Code : Tout sélectionner

mysql_query("SET NAMES 'utf8'");

juste après ta connexion à la bdd, car pour l'instant (en attendant php6) le serveur et mysql envoient par défaut des entêtes au format iso-8859-1 et elles priment sur la balise meta html.

Si tu veux un petit exemple de code complet codé entièrement en utf-8 tu peux aller visiter ce tuto

par TiFred » 02 oct. 2008, 22:32

Je vais essayer mais c'est bizarre

Les données sont passées par un POST, puis un lien dans un message envoyé afin d'afficher un autre POST
Je ne vois pas pourquoi cela serait coder (peut-être le message) :?:

par Cyrano » 02 oct. 2008, 22:16

Ça veut donc dire que tu as des données en UTF-8 pour partie et en iso-8859-1 pour l'autre partie. Si ce qui est en utf-8 provient de la base de données, alors utilise la fonction utf8_decode() sur les données et utilise le charset iso-8859-1 pour ton en-tête HTML :-k

par TiFred » 02 oct. 2008, 21:46

Bonjour,

ça me met bien Frédéric mais devant ça m'affiche Pr�nom
une idée ?
merci

par Cyrano » 26 sept. 2008, 05:28

Au lieu de ré-encoder en UTF-8 un contenu qui est déjà en UTF-8, modifie l'encodage dans l'en-tête HTML. Ta balise meta indique iso-8859-1. Fais l'expérience suivante : ouvre ta page dans un navigateur et ensuite, clique sur "Affichage>Encodage des caractères>UTF-8" : et là, miracle, tout redevient normal.
Donc, remplace ceci :

Code : Tout sélectionner

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
par ça

Code : Tout sélectionner

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">