Accent, au secours ...

Résolu
Noiretulipe Messages postés 164 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 13 juillet 2008 - 11 juil. 2008 à 17:40
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 - 13 juil. 2008 à 12:09
Bonjour,

Je viens de parcourir durant une bonne demi-heure le forum. Malheureusement je n'ai pas trouvé de solution à mon problème.
J'ai un formulaire basic, avec un champs texte et un submit. Quand je récupère la variable POST, les accents contenus dans celle-ci se transforme en caractère étrange. Pas le fameux '?' mais par exemple : Pour "Je suis hébété par ce problème"
J'obtiens : Je suis hñÃñÕ par ce problïÎe

Je précise que ce script fonctionnais parfaitement en local et chez un hébergeur français. J'ai transféré mon site sur un serveur américain et depuis tous mes POST rencontre ce problème.

Je vous ai mis à disposition un script de test qui peut-être vous éclairera : http://www.racontemoimonhistoire.fr/test/accent.php

Merci d'avance !

25 réponses

nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
12 juil. 2008 à 11:00
non,

en fait je pense que tu peus essaye ça :

iconvset_encoding('EUC-JP','UTF-8');

a++

Si la réponse vous convient, pensez : Réponse acceptée !
3
Noiretulipe Messages postés 164 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 13 juillet 2008
12 juil. 2008 à 16:31
Je me suis renseigné longuement sur la fonction iconv ... Mais je n'ai pas trouvé grand chose qui puisse m'aider.
Seulement avec un :

header('Content-type: text/html; charset=UTF-8');
et
$accent = iconv("EUC-JP","UTF-8",$_POST['accent']);

me retourne un variable correct, mais je ne souhaite pas changer l'ensemble de mon site en UTF-8 et je ne souhaite pas convertir l'ensemble de mes bases SQL en UTF-8 ......

j'ai eu ceci comme réponse sur un autre forum, ça vous parle ?
"
Sur le serveur, le "locale" doit être US alors que le contenu retourné par les $_POST serait plutôt FR.
Il faut peut être récupérer le "locale" de l'utilisateur pour positionner celui du côté serveur.

"
3
pysco68 Messages postés 681 Date d'inscription samedi 26 février 2005 Statut Membre Dernière intervention 21 août 2014 8
13 juil. 2008 à 10:45
rebonjour.... après une abscence de une demie journée me revoici ^^

je pense que tu était parti sur la bonne voie avec iconv().... mias rien ne te force à utiliser iconv() avec uniquement de l'utf-8....

<hr size="2" width="100%" />
setlocale(LC_CTYPE, 'fr_FR');
$rectifiee = icon
v('EUC-JP', 'ISO_8859-1//TRANSLIT', $chaine);
<hr size="2" width="100%" />
le '//TRANSLIT' active ce que l'on appelle la translitération, cad que certains caractères vont êtres représentés aproximativements s'il n'ont pas d'équivalent dans le jeux de caractère cible....

Bonne chance

<hr size="2" width="100%" />Developpement Web Yannic GraphiX | Mon CMS yArt et sa démo
<hr size="2" width="10" />
3
pysco68 Messages postés 681 Date d'inscription samedi 26 février 2005 Statut Membre Dernière intervention 21 août 2014 8
11 juil. 2008 à 17:45
ça doit être une erreure de charset... enfin pas trop le choix ^^

essaye donc par exemple d'envoyer ton formulaire en unicode ou en iso-xxxx (tu peux le modifier dans le navigateur (Firefox: "Affichage"->Encodage de caractères....

et regarde le résultat coté serveur... après tu peux insèrer le bon encodage en tant que méta-information dans l'entête de ton site...

Byebye ;)

<hr size="2" width="100%" />Developpement Web Yannic GraphiX | Mon CMS yArt et sa démo
<hr size="2" width="10" />
0

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

Posez votre question
Noiretulipe Messages postés 164 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 13 juillet 2008
11 juil. 2008 à 17:46
Je vais regarder cela ... merci !
0
Noiretulipe Messages postés 164 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 13 juillet 2008
11 juil. 2008 à 17:57
Non, ça ne change rien ... De plus, j'ai volontairement fai une faute d'orthographe sur le submit "Posté" et lui son accent s'affiche correctement ... Quelqu'un peu m'éclairer, là je nage !

Pour info, j'ai essayé pas mal d'encodage ... je ne pige rien, rien n'y fait !
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
11 juil. 2008 à 21:47
Salut,

salut pysco68

pysco68 ++

Met le même charset en php en CSS et en PHP et aussi en AJAX si tu l'utilise !

HTML : <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> // tu peus aussi essayer en ANSI !!!

CSS : @charset "utf-8"; // tu peus aussi essayer en ANSI !!!

PHP : header('Content-type: text/html; charset=UTF-8');// tu peus aussi essayer en ANSI

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
Noiretulipe Messages postés 164 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 13 juillet 2008
12 juil. 2008 à 00:34
Bon, j'ai avancé un petit peu dans mon problème, mais je continue tout de même à nager mignon ....

$detect = mb_detect_encoding($_POST['truc']);

Me retourne, avec surprise : EUC-JP   (????????)

Enfin bon,

J'ai donc:
Ajouter :
header('Content-type: text/html; charset=UTF-8');

Ce qui m'affiche là sans surprise de jolis "?" à chaque accent rencontré dans le formulaire.

Mais, là où j'avance :
$truc = mb_convert_encoding($_POST['truc'], "HTML-ENTITIES", "EUC-JP");

Me permet de convertir le POST en UTF-8 et il s'affiche convenablement ainsi que son enregistrement dans Mysql est correct.

Selon vous, n'y a t'il aucun moyen de simplifier tout cela ?
0
Noiretulipe Messages postés 164 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 13 juillet 2008
12 juil. 2008 à 10:54
Après une multitude de test, j'en suis venu au conclusion suivante :

* L'affichage du texte se fait normalement, aucun soucis d'interprétation de caractère,
* Seul les variables postées sont comme par magie encodé en EUC-JP .....

Donc, cette transformation se fait soit :

* Au moment du POST (au niveau du formulaire)
* Soit à la récupération du header par PHP ......

Suis-je sur la bonne voie, ou me fourvoierais-je ?

Merci de m'aider, deux jours que je me bas avec ça et j'avoue que je suis prêt à craquer ... Seul le souvenir d'avoir entrée mon numéro de carte de crédit pour payer le serveur me retient !
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
12 juil. 2008 à 10:58
Je pense que tu est sur la bonne voie mais c'est loin d'être une certitude !

Sur un autre sujet Evangun avait donné une fonction pour convertir une variable en un autre encodage !

Si ma mémoire est bonne, cette fonction c'est : iconv($var, "UTF-8");

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
12 juil. 2008 à 16:37
ça ne veut rien dire, enfin si, ça veut dire que l'encodage choisi par l'utilisateur n'est peut être pas le même que celui de tes variables donc il faut que tu récupère l'encodage de l'utilisateur pour mettre le même a tes variables...

Phrase très mal formulé, faut comprendre !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
Noiretulipe Messages postés 164 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 13 juillet 2008
12 juil. 2008 à 20:12
Bon, je n'avance toujours pas.
J'ai essayé :
setlocale(LC_ALL, 'fr_FR.ISO_8859-1', 'fr_FR','fr','fr','fra','fr_FR@euro');

Mais en vain.

Je me suis donc penché sur l'encodage de mes fichiers qui était en ANSI et j'ai passé mon script de test en UTF-8 ... puis UTF-8BOM mais ça ne change rien à mon problème....
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
12 juil. 2008 à 21:50
ba je sais pas alors !

Si la réponse vous convient, pensez : Réponse acceptée !
0
Noiretulipe Messages postés 164 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 13 juillet 2008
12 juil. 2008 à 23:21
Merci tout de même ....
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
13 juil. 2008 à 09:38
de rien, espèrons que pysco en sera plus que moi !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
Noiretulipe Messages postés 164 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 13 juillet 2008
13 juil. 2008 à 10:55
J'ai déjà testé ça et .... ça ne fonctionne pas . Ne pas me demander pourquoi . Je n'en sais rien ....peut-être que PHP du moins la version sur le serveur n'est pas en mesure de convertir le EUC-JP (quelle idée aussi) vers de ISO ....

Non, le seul truc qui fonctionne c'est le passage en UTF-8 et un iconv vers cette encodage. Je m'y résous.

Merci à vous pour votre aide.

Toutefois s'il vous venait la solution miracle, je suis toujours preneur.
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
13 juil. 2008 à 11:02
De rien,

Je te promet que si je trouve autre chose je t'en ferai part ...

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
pysco68 Messages postés 681 Date d'inscription samedi 26 février 2005 Statut Membre Dernière intervention 21 août 2014 8
13 juil. 2008 à 11:42
....dans ce ces là il te reste peut-être qu'a écrire un petit mail à ton hébergeur... ce sont peut-être eux qui on foutu la merde (désolé mais ça l'est ^^) où à t'informer plus en détail sur la construction des deux charsets concernés et à en faire la conversion "à la main"....

enfin bref.... rien de joyeux en tout cas.... désolé de ne pas avoir pu plus te dépanner...

Bonne chance encore!!

Yannic

<hr size="2" width="100%" />Developpement Web Yannic GraphiX | Mon CMS yArt et sa démo
<hr size="2" width="10" />
0
Noiretulipe Messages postés 164 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 13 juillet 2008
13 juil. 2008 à 11:44
Merci à vous deux.

Bonne continuation !
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
13 juil. 2008 à 11:52
Bonne continuation a toi aussi, je te comprend, moi aussi je suis dans la me*** mais pas pour la même raison que toi...

Je dois coder un site sauf que y a déja quelqun qui a fait des fonction php et des pages php mais ce gas il a codé comme un porc, j'ai jamais vu ça, je me demande comment je vais faire...

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
Rejoignez-nous