PHP $_POST ne prend pas les accents

Cette question est résolue, vérifier ma réponse pour voir la solution


Je suis en train d'ajouter à ma DB un texte avec des lettres accentuées par le biais d'un formulaire html qui soumet POST à une page PHP, le problème est que les lettres accentuées sont convertis en caractères illisibles.

J'ai cette forme:

<form action="page.php" method="POST">
    <input type="textarea" id="text1" name="text1" />
    <input type="submit" value="Send" />
</form>

Et puis, dans page.php:

echo $_POST['text1'];

Le problème est que si je saisie àèìòù dans mon textarea puis-je soumettre le formulaire, j'obtiens ce résultat:

à èìòù

Ma prochaine étape serait de convertir les lettres accentuées en entités html avec htmlentities($_POST['text1'] mais j'ai besoin de $_POST de me donner les lettres correctes.

Remarque: dans la page de tête j'ai déjà

<meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" />

Comment puis-je résoudre ce problème?

MODIFIER

J'ai essayé avec

<form action="page.php" method="POST" accept-charset="UTF-8">
    <input type="textarea" id="text1" name="text1" />
    <input type="submit" value="Send" />
</form>

Et il n'a pas le résoudre

EDIT 2

Aussi essayé avec l'ajout de

<meta charset='utf-8'>

à mon document, dans la tête, et il ne fonctionne pas

MODIFIER 3

J'ai essayé avec la configuration de mon charset en UTF-8 sur la deuxième page, et

echo $_POST['text1'];

affiche le résultat correct.

J'ai vu que le problème est que j'ai deja utiliser htmlentities, avec ce code

echo htmlentities($_POST['text1']);

- Je obtenir

&Atilde;&nbsp;&Atilde;&uml;&Atilde;&not;&Atilde;&sup2;&Atilde;&sup1; 

Qui, de fait, sorties

à èìòù 

même si j'ai mis charset dans mon meta-balises d'en-tête et trop. Quelqu'un sait-il comment puis-je le résoudre?

Vous devriez vérifier votre encodage de la page, définissez URF-8 et ti va travailler. Google pour plus de détails.
Probablement devrait lire: Le Minimum Absolu que Tout Développeur Doit Absolument, Positivement Savoir Sur Unicode et les Jeux de Caractères.
stackoverflow.com/questions/4696499/...
Ah, je vois le problème. Vous n'avez pas un encodage sur votre page de sortie.
Vous devez toujours spécifier l'encodage. Le meilleur moyen est d'envoyer un en-tête HTTP et le mettre dans le HTML. L'en-tête, s'il est présent, est utilisé lors de l'utilisation de HTTP. Le HTML est utilisé lors du chargement du HTML sans HTTP, par exemple, à partir d'un disque en tant que fichier. Et oublier le accept-charset, il ne sera pas vous aider, parce que le navigateur envoie des formes dans l'encodage de la page, qui était déjà en UTF-8 dans votre cas.

OriginalL'auteur BackSlash | 2013-04-19