curieuse gestion des carac speciaux dans formulaires HTML

j’ai un bout de code test (ci joint) qui affiche differents objets HTML avec client.print () function => ex : client.println(F("

" + String(Nommage_client) + "


")); pas de pb d'affichage des carac accentués ou speciaux dans ce cas (sous explorer) : j'ai bien mis la meta balise UTF 8 !

par coontre gros soucis avec les formulaires type Text par ex => client.println (F(""));
avec char Nommage_client [30] =“Arduino-télé info Marcillé”;

des que je modifie le champ texte en supprimant “é” par ex, la requete balance des &A0&152 etc… a la place des carc speciaux embêtant pour saisir un texte comportant des carc speciaux a une place aléatoire…a moins de developper un filtrage costaud.

quelqu’un a t-il une explication et surtout une solution ?? philou35 (from france)…

gestion_formulaires_web_test.ino (4.58 KB)

j'ai posté aussi ds le forum international mais apparemment y'a pas grand monde a avoir ce genre de pb....
si quelqu'un a 5 mns pour essayer le bout de code fourni plus haut, et me dire ce qu'il pense de cet affichage bizarre des caractères accentués dans les objets type text box, et surtout comment faire pour avoir un affichage normal...et complet !
je precise aussi que le pb n'est que dans ce type d'objet et pas dans l'affichage simple de texte...

ce n'et pas un pb de taille memoire non plus...

bref je sèche!

Normal : F() place le contenu entre parenthèse dans la flash et non dans la ram, si tu mets des variables dedans c'est sûr que ça risque pas de marcher

je sais pour les F(), si tu regardes le code, les lignes où il y a des var textes a afficher sont sans F()...
j'ai aussi essayé en mettant 3 client.print a la suite pour pas melanger var et texte brut mais j'ai exactemeent le meme comportement...

lee pb ne semble concerner que la saisie de texte, pas l'affichage simple...

d'apres PaulS de seatlle, l'arduino filtrerait ds le sens entrant les carac en les remplacant par de l'hexa...bref, ce serait donc une limitation par rapport a l'HTML standard ???

quelqu'un confirme ???

philou35:
je sais pour les F(), si tu regardes le code, les lignes où il y a des var textes a afficher sont sans F()…

Ce qui n’empêche pas que tu t’es planté :

client.println(F("

" + String(Nommage_client) + "


"));

Donc String(Nommage_client) est bien dans le F()

j’ai du envoyer un mauvais fichier, ds mon dernier, les F sont virés t de toute façon, ça bronche a la compil…
voici le dernier fic en date, au cas ou quelqu’un veuille voir le pb en fonct reel…

gestion_formulaires_web_test.ino (4.58 KB)

T'as essayé de te passer des String ? Au moins pour tester

je viens de faire l'essai en live : le comporteent devient interessant !!

j'ai remplacé la String(Nommage_client) par le même texte "en dur" ds le formulaire, et là je retrouve le même comportement qu'avec la variable a savoir :

  • le texte n'est affiché que sur 12 caractere : "Arduino-télé" au lieu de "Arduino-télé info Marcillé" (bien que le size soit mis a 30 ds le formulaire...)
  • qd je supprime le dernier "é" du texte a saisir, la requete renvoie tjrs les memes car parasites : "Arduino-t%C3%A9l"

(+ je viens de passer le size a 40, au cas où... mais tjrs le même comportement...!)

ça devient obsessionnel ce pb !!!

Je crois que j’ai la soluce : il y a des problème de prise en charge de l’UTF8. Donc ‘é’ n’existe pas pour ainsi dire … Mais tout n’est pas perdu semble-t-il :

http://www.forward.com.au/pfod/ArduinoProgramming/Languages/index.html

oui j’avais deja vu cela mais ça confirme surtout que l’arduino (actuel) a des limitations dans le traitement du flux entrant des caracteres…semble t-il…
donc ça confirmerait les dires de PaulS comme quoi l’arduino filtre les carac ASCII uniquement

de toute façon, comme je veux traiter une chaine entrée par un utilisateur lambda donc inconnue a priori, je ne vois pas comment utiliser la solution donnée ds le lien…

je crois que je vais mettre ça de coté, et interdire les caracteres accentués tout bonnement…
encore un coup dur pour not’ belle langue !! crévindiou

C’est pas l’ASCII complet qui pose problème, c’est les codes ASCII supérieur à 127 (pour tout ce qui est Serial.print() en tout cas). Mais jusque là je pensais que c’était une limitation relative au Serial Monitor de l’Arduino. Parce que visiblement le compilateur le prend en charge.

Bref ce que propose le lien c’est un convertisseur qui n’utilise que des caractères <127, donc qui seront compilés sans problème mais dont l’interpretation par le navigateur ne sera pas la même. Donc dans l’absolu tu peux déjà tester sur une chaîne fixe ce qu’elle donne une fois convertie

ok merci pour l'info !
si j'ai du temps pour creuser la question, je ferais l'essai (bien que si les carac sont codées differemment, ça risque de poser des pbs de compatibilité quelquepart) mais comme j'ai dis, mieux vaut essayer de contourner en supprimant les accents...
de toute façon, c'etait une fonctionnalité purement "esthetique"...
mais merci pour ton aide.

Ce qui compte c'est que l'interpréteur prenne en compte ce qui est streamé. Dans le lien par exemple le chinois c'est OK, l'indien pas ... Mais bon la il s'agit seulement d'interprétation de caractère donc logiquement à moins d'avoir un navigateur d'il y a 15 ans ça devrait le faire. Mais je suis curieux de ton retour

derniere info : bien que j'ai viré les é et autres è de la String, ça continue de planter au niveau de l'affichage limité à 12 car ds la saisie formulaire... si ensuite j'ajoute un car, il le prend en compte qd même ! à la limite c'est plus cette limitation des caracteres qui est vraiment genante...surtout qu'il n'y a plus aucun car >127 maintenant !... peut etre donc une autre explication a chercher...

ça m'interesserait que quelqu'un puisse observer le phenomene et me confirme mon point de vue...
pour cela, recuperer mon code attaché ci dessus et roulez jeunesse.

pour ce soir j'ai ma dose, mais je ne lache pas le truc.
ds Arduino il y a "Hard"... ça se mérite !