Afficher lettres avec accent correctement php

founzo Messages postés 17 Date d'inscription   Statut Membre Dernière intervention   -  
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonsoir à tous, j'ai créer un formulaire sur une page contact.php et une autre page traitement.php pour récupérer les messages (par mail) que les visiteurs laisseront sur mon site.
Le soucis est que je reçois bien le mail mais les lettres avec accents (éàü...) s'affichent assez bizarrement et avec beaucoup de points d’interrogation. je vous envoie le code de la page traitement.php, merci d'avance:


<?php 
  $name_error = $email_error = "";
  $name = $email = $phone = $message = $success = "";

  if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (empty($_POST["name"])) {
  $name_error = "Nom & Prénoms Obligatoires!";
  } else {
  $name = test_input($_POST["name"]);
  if (!preg_match("/^[\pL\pM\p{Zs}.-]+$/u",$name)) {
  $name_error = "Seul les Lettres sont autorisées"; 
     }
      }

  if (empty($_POST["email"])) {
  $email_error = "Adresse Mail Obligatoire!";
  } else {
  $email = test_input($_POST["email"]);
  if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
  $email_error = "Format d'Adresse Mail Invalide!"; 
     }
      }
     
  if (empty($_POST["message"])) {
     $message = "";
  } else {
     $message = test_input($_POST["message"]);
      }

  if ($name_error == '' and $email_error == '' ){
  $message_body = '';
  unset($_POST['submit']);
  foreach ($_POST as $key => $value){
  $message_body .=  "$key: $value\n";
       }

  $to = 'monmail@enfin.ouf';
  $subject = 'Message Provenant du Site Internet';
  if (mail($to, $subject, $message_body)){
  $success = "Message envoyé, nous vous contacterons très bientôt";
  $name = $email = $message = '';
       }
      }

    }

    function test_input($data) {
      $data = trim($data);
      $data = stripslashes($data);
      $data = htmlspecialchars($data);
      return $data;
    }
  ?>

A voir également:

2 réponses

NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
Probablement un souci d'encodage.
Si tu passe par une base de données, pense à mettre le champ en UTF-8 ou UTF8mb4 et le préciser sur la connexion via PHP.
Pour l'affichage, encode tes fichiers source en UTF-8 (option de ton éditeur de texte) et envoie l'encodage via la balise header.
0