Afficher lettres avec accent correctement php

founzo Messages postés 18 Statut Membre -  
jordane45 Messages postés 40050 Statut Modérateur -
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 15479 Statut Modérateur 366
 
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