Page 1 sur 1

Caractères altérésdans input

Posté : 09 août 2013, 12:48
par magnan39
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.

Re: Caractères altérésdans input

Posté : 09 août 2013, 13:01
par xTG
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

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

Posté : 09 août 2013, 14:03
par magnan39
Merci pour la réponse mais quelle fonction utiliser pour obtenir le libellé valide ?

Re: Caractères altérésdans input

Posté : 09 août 2013, 14:14
par xTG
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ésdans input

Posté : 09 août 2013, 14:45
par magnan39
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

Posté : 09 août 2013, 15:07
par xTG
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

Posté : 09 août 2013, 15:26
par magnan39
echo mb_detect_encoding ($this->row->libelle_mvtcompte); affiche ASCII

Re: Caractères altérésdans input

Posté : 09 août 2013, 15:30
par magnan39
J'ai essayé :
$libelle_mvtcompte = iconv('UTF-8', 'ASCII',$this->row->libelle_mvtcompte);
sans succés

Re: Caractères altérésdans input

Posté : 09 août 2013, 18:57
par xTG
Mauvais sens pour les arguments. ;)
ASCII -> UTF-8
$libelle_mvtcompte = iconv('ASCII', 'UTF-8',$this->row->libelle_mvtcompte);

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

Posté : 13 août 2013, 11:25
par magnan39
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

Posté : 13 août 2013, 15:18
par magnan39
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ésdans input

Posté : 14 août 2013, 08:16
par moogli
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.