[RESOLU] Caractères altérésdans input

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 : [RESOLU] Caractères altérésdans input

Re: Caractères altérésdans input

par moogli » 14 août 2013, 08:16

Modération :
Si ta question est résolue, pense à l'indiquer pour que les futures personnes qui voudront consulter ce sujet sachent qu'il contient une solution.
Tu peux réaliser cette opération toi-même en cliquant sur le bouton vert "Mettre le sujet en tant que Résolu" situé en haut de la page à côté du titre du sujet.

Re: Caractères altérésdans input

par magnan39 » 13 août 2013, 15:18

En fait j'ai résolu le problème en supprimant dans une boucle le code ASCII 0 qui précédait chaque caractère.

Merci pour l'aide.

Re: Caractères altérés dans input

par magnan39 » 13 août 2013, 11:25

Bonjour

Je reprends le même sujet que je n'arrive pas à résoudre.

Cette fonction n'a pas de résultat :

$libelle_mvtcompte = iconv('ASCII', 'UTF-8',$this->row->libelle_mvtcompte);

Il faut préciser que je lis en Php un fichier csv créé par un programme java.


Ce libellé : Retrait Au Distributeur

apparait sous cette forme aprés stockage dans la table MySql :
�R�e�t�r�a�i�t� �A�u� �D�i�s�t�r�i�b�u�t�e�u�r� �H�n�b� �H�i�k�k�a�d�u�w�a� �0� �C�o�l�o�m�b�o� �2�2�/�0�2�


Si je fais un export SQL de la table le meme libellé apparait sous cette forme :
'\0R\0e\0t\0r\0a\0i\0t\0 \0A\0u\0 \0D\0i\0s\0t\0r\0i\0b\0u\0t\0e\0u\0r\0 \0H\0n\0b\0 \0H\0i\0k\0k\0a\0d\0u\0w\0a\0 \00\0 \0C\


Merci par avance pour la réponse.

Re: Caractères altérésdans input

par xTG » 09 août 2013, 18:57

Mauvais sens pour les arguments. ;)
ASCII -> UTF-8
$libelle_mvtcompte = iconv('ASCII', 'UTF-8',$this->row->libelle_mvtcompte);

Re: Caractères altérésdans input

par magnan39 » 09 août 2013, 15:30

J'ai essayé :
$libelle_mvtcompte = iconv('UTF-8', 'ASCII',$this->row->libelle_mvtcompte);
sans succés

Re: Caractères altérésdans input

par magnan39 » 09 août 2013, 15:26

echo mb_detect_encoding ($this->row->libelle_mvtcompte); affiche ASCII

Re: Caractères altérésdans input

par xTG » 09 août 2013, 15:07

C'est bizarre que cela cible uniquement un élément et non toute la page...
Si la donnée est encodée X et que la page est encodée Y on doit avoir le même résultat pour un echo de la variable dans un input ou en dehors...

Pourrais-tu regarder le retour de cette fonction sur ta variable $this->row->libelle_mvtcompte : http://fr2.php.net/manual/fr/function.m ... coding.php

Re: Caractères altérésdans input

par magnan39 » 09 août 2013, 14:45

Je reçois cette donnée depuis un fichier csv. J'ai utilisé utf8_encode sans succés.
$libelle_mvtcompte = utf8_encode($this->row->libelle_mvtcompte);

Une précision l'affichage du libellé est correct.
Prelevement Operation Carte Hors Ue

Il apparait mal codé uniquement dans <input>
<input type="text" name="libelle_mvtcompte" value="<?php echo $libelle_mvtcompte ?>" size="90" />

La valeur ci-dessous apparait uniquement dans la zone de saisie input
�P�r�e�l�e�v�e�m�e�n�t� �O�p�e�r�a�t�i�o�n� �C�a�r�t�e� �H�o�r�s� �U�e�

Re: Caractères altérésdans input

par xTG » 09 août 2013, 14:14

Ce n'est pas une question de fonction mais de configuration d'environnement.
Car si tu commences à traiter ce genre de problème au cas par cas avec une fonction de conversion c'est vouloir remplacer chaque grain de sable par un grain de riz...

Je te recommande ce billet : faq-tutoriels/encodage-utf-t245062.html

Re: Caractères altérés dans input

par magnan39 » 09 août 2013, 14:03

Merci pour la réponse mais quelle fonction utiliser pour obtenir le libellé valide ?

Re: Caractères altérésdans input

par xTG » 09 août 2013, 13:01

C'est un problème d'encodage.
Tu as ta variable qui n'est pas dans le même encodage que la requête HTTP renvoyée.

Pour l'encodage il faut toujours avoir le même pour :
- l'enregistrement du fichier
- les champs en base de données
- l'entête HTTP
- l'entête HTML (charset)
- le charset interne utilisé par le serveur

Caractères altérésdans input

par magnan39 » 09 août 2013, 12:48

Bonjour

La chaine de caratères ci dessous :
Ratp Paris Cedex 12
se transforme en :
�R�a�t�p� �P�a�r�i�s� �C�e�d�e�x� �1�2�

dans une zone de saisie de texte d'un formulaire.
<input type="text" name="libelle_mvtcompte" value="<?php echo $this->row->libelle_mvtcompte ?>" size="90" />

Merci par avancepour vosréponses.