Pb conversion utf-8/iso php xml

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 : Pb conversion utf-8/iso php xml

Re: Pb conversion utf-8/iso php xml

par moogli » 04 juin 2011, 11:14

raaaaa oui j'avais oublier le strtolower non utf-8 pour cela tu peux utiliser les fonctions mb_string (d'ailleurs faudrait le faire pour toutes les fonctions de cahines de caractère) => mb_strtolower

@+

Re: Pb conversion utf-8/iso php xml

par Gluttony » 04 juin 2011, 11:04

Merci pour ta réponse! En fait il semblerait que le problème vienne du strtolower qui ne gère pas l'utf8.

Comme quoi parfois, il suffit d'envoyer un post pour trouver la solution a un probleme qui nous fait galèrer depuis deux jours... Mais ce qui est étonnant c'est que je m'en srt pour toutes les pages et que c'est que là que ça me pose problème!

En tout cas tu as raison, il faut que je force le charset dans le formulaire!

Merci pour ta réponse

Re: Pb conversion utf-8/iso php xml

par moogli » 04 juin 2011, 10:54

salut,

a tu essayé un utf8-encode sur la valeur issue du formulaire ? (tu ne force pas le charset dans le formulaire) c'est p'tet la source du soucis ;)


@+

Re: Pb conversion utf-8/iso php xml

par Gluttony » 04 juin 2011, 10:44

oups envoi par inadvertance...

Donc voilà je ne comprends pas... Je peuux m'ne sortir en utilisant utf8_encode, mais étant donné que tout est en utf8 je ne devrais pas en avoir besoin non? en puis j'aimerais trouvé la cause du problème pour pouvoir le prévenir...

Merci en tout cas pour vos réponses!

Pb conversion utf-8/iso php xml

par Gluttony » 04 juin 2011, 10:40

Bonjour à tous,

Je travaille actuellement sur l'interface admin de l'un de mes sites web, et je faiis face à un pb assez surprenant... Je vais essayer de faire simple!

J'ai créé mon IA en essayant tant bien que mal de suivre le modèle MVC. J'ai dans cette IA une catégorie qui contient 8 sous catégories qui fonctionnent plus ou moins de la même manière. Il existe une page (vue) et un contrôleur pour chacune de ces sous-catégories. Les contrôleurs se ressemblent énormément, c'est le ciblage qui les différencie principalement. Donc pour les faire plus rapidement, j'ai fait la première page/contrôleur à la main et j'ai réutilisé ce "modèle" en le renommant selon les catégories et en modifiant les 2/3 ptits trucs qui devaient être modifiés.

Tout se passait très bien jusqu'à présent. J'arrive à la dernière catégorie et la BAm, problème! L'une des données que je récupère de mon formulaire ne semble pas être en utf8. Je précise tout de même que tout mes fichiers sont en utf-8 et que même si j'en était sure, je les ai tous reconvertit en utf-8 sans bom, au cas ou! la valeur des champs de mon formulaire et récupérée dans un xml, lui aussi en utf-8. Voici le message d'erreur que j'obtiens lorsque je lance le traitement :

Warning: DOMElement::setAttribute() [domelement.setattribute]: string is not in UTF-8 ........ on line 86.

Conséquences -> mon xml se convertit en iso. Mais surtout je perd une grande partie des données contenues dans mon xml!! Un truc de fou!

Je mets un peu de code pour que ce soit plus clair :

Code : Tout sélectionner

// LA VUE //Il manque des infos , je ne vais pas tout mettre... $boxes-> XMLList ; $idBox -> l'indice de la box que je récupère grâce à un GET $titre = $boxes->item($idBox)->getAttribute('nom'); <form action="#" method="post" enctype="multipart/form-data" name="formulaire3" onsubmit="return verifFormMod(this)"> <div class="labForm">Nom : </div> <input type="text" class="text" id="txt1" name="titre" value="<?php echo $titre?>"/> // Je passe les autres input qui eux ne pose pas de problème... <div class="editBar"> <input type="submit" name="modifier" value="Valider" class="submit"/> <a href="../pages/galerieProjets.php"><input type="button" name="annuler" value="Annuler" class="submit"/></a> </div> </form>

Code : Tout sélectionner

// LE CONTROLEUR if (isset($_POST['titre'])) { $titre = $_POST['titre']; $nomMini = strtolower($titre).'Mini'; } $newBox->setAttribute('nomMini', $nomMini); // La fameuse ligne 86