Bonjour,

Sur une page
<html lang="fr-fr"><head><meta charset="utf-8">

J'ai un formulaire méthode post toussimple. Smiley lol Sauf.... que... par coquetterie... j'ai :

Un input type text dont le style précise : text-transform:uppercase;

Bon... tout se passe comme souhaité pour la saisie... i.e. : â affiche Â, ê affiche Ê... etc.... cool! Smiley murf

Sauf que... mon programme php qui récupère la sauce côté serveur...
Lorsque je fais l'écho de
mb_strtoupper($_POST['lenamekivabi1'], 'UTF-8');

et que je prenne ou pas le soin de préciser
setlocale(LC_CTYPE,'fr_FR');

eh bien... tous les caractères accentués, ligatures et autres spécificités fr_FR sont affichées en tant que point d'interrogation sur losange. Smiley eek

Si vous avez une idée...
Modifié par aCOSwt (19 May 2016 - 22:17)
aCOSwt a écrit :
Bonjour,
Sur une page
&lt;html lang="fr-fr"&gt;&lt;head&gt;&lt;meta charset="utf-8"&gt;

J'ai un formulaire méthode post toussimple. Smiley lol Sauf.... que... par coquetterie... j'ai :
Un input type text dont le style précise : text-transform:uppercase;
Bon... tout se passe comme souhaité pour la saisie... i.e. : â affiche Â, ê affiche Ê... etc.... cool! Smiley murf
Sauf que... mon programme php qui récupère la sauce côté serveur...
Lorsque je fais l'écho de
mb_strtoupper($_POST['lenamekivabi1'], 'UTF-8');

et que je prenne ou pas le soin de préciser
setlocale(LC_CTYPE,'fr_FR');

eh bien... tous les caractères accentués, ligatures et autres spécificités fr_FR sont affichées en tant que point d'interrogation sur losange. Smiley eek
Si vous avez une idée...

Tu dois d'abord t'assurer que l'envoi en POST depuis le formulaire a bien été fait en UTF-8, sinon le flux de caractères reçu (et donc le contenu des champs de saisie) ne sera pas correctement décodé par le langage côté serveur.
Selon ce tutoriel, c'est a priori, l'attribut @accept-charset de la balise FORM qui précise ce point :
<form action="demo_form.asp" accept-charset="ISO-8859-1">
  First name: <input type="text" name="fname"><br>
  Last name: <input type="text" name="lname"><br>
  <input type="submit" value="Submit">
</form>

A partir des outils de développement de ton navigateur, vérifie les entêtes de la requête HTTP reçue par le serveur pour voir la tête qu'elles ont.
Merci sepecat de t'être penché sur mon problème.
sepecat a écrit :
Selon ce tutoriel, c'est a priori, l'attribut @accept-charset de la balise FORM qui précise ce point

Yop sauf que...
w3schools a écrit :
The default value is the reserved string "UNKNOWN" (indicates that the encoding equals the encoding of the document containing the <form> element).

Dont je comprends que, par défaut, dans mon cas, il est bien UTF-8
Anyway... j'ai fait l'essai en rajoutant l'accept-charset dans la form et... cela n'a... ni mangé de pain certes ni... rien changé... Smiley biggol
sepecat a écrit :
A partir des outils de développement de ton navigateur, vérifie les entêtes de la requête HTTP reçue par le serveur pour voir la tête qu'elles ont.

Eh bien... elles ont... : Une bonne tête ! Smiley langue

C'est bizarre ce truc quand même car, alors que logiquement cela ne change rien pour la variable postée, c'est ce text-transform:uppercase; qui semble foutre le brin dans l'affaire.
Sans lui, je n'ai aucun problème.
Modifié par aCOSwt (19 May 2016 - 07:49)
Smiley confused Smiley confused Smiley confused Pardon tout le monde et sorry 4 the noise! Smiley confused Smiley confused Smiley confused
Je viens de réaliser que quelque part dans mon code coté serveur je m'étais emmêlé les pinceaux comme un n00b avec les MultiBytes_*
On ne m'y reprendra plus! Smiley langue
Au moins jusqu'à la prochaine fois! Smiley biggol