10644 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,

en fait, j'ai un problème d'accent lors de l'affichage de ma page web.

J'ai une colonne dans une table qui est encodée en "utf8_unicode_ci".

Dans ma page HTML, j'ai renseigné le système d'encodage de la façon suivante :


<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
...
</html>


Pour l'accès à ma base de données, j'ai mis la commande suivante lors de la connexion à la base de données :


    $db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'UTF8'");
    $db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET CHARACTER SET 'UTF8'");


Donc, quand je me rends sur ma page, j'ai des caractères spéciaux qui remplacent les accents.

Avez-vous une idée du problème ?

Merci d'avance

Bonne soirée
Thierry
Et l'eau,

Pour travailler avec un type d'encodage, il faut que strictement tout soit encodé de la même manière. Ton fichier est il en utf-8 sans BOM ? Comme tu dois être sur Windows vraisemblablement, vérifies dans ton éditeur que tu codes bien en utf-8 sans bom. Par la même occasion, regarde le type de retour chariot que tu utilises.... ça, ça peut foutre la m**** par la suite....
Administrateur
Bonjour,

J'ajoute que les en-têtes serveur prennent le pas sur ce que déclare le code HTML… F12 donc Smiley smile
Et pour afficher des infos enregistrées en BDD, il faut savoir comment elles y ont été insérées donc comment elles y figurent. Des fois y a des surprises Smiley langue

J'ai plusieurs résultats de recherche (pour "encodage"/"encoder") dans les articles/astuces ici mais celui auquel je pensais est l'article de Florens : https://www.alsacreations.com/astuce/lire/69-declarer-encodage-des-caracteres.html
Il y en a aussi un sur le débogage
Felipe a écrit :

...
Et pour afficher des infos enregistrées en BDD, il faut savoir comment elles y ont été insérées donc comment elles y figurent. Des fois y a des surprises Smiley langue
...


bien vu Smiley smile
Bonjour à tous,

j'ai trouvé une solution qu'une autre personne avait proposée et qui semble bien fonctionner.

Voici le code PHP pour cette solution.


<?php
header('Content-type: text/html; charset=utf-8');

try {
   $host = 'localhost';
   $user = 'xxx';
   $pass = 'xxx';
   $charset = 'utf8';
   $db = 'xxx';
   $pdo_options = array(
      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
      PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
   );
   $dbh = new PDO("mysql:host=$host;dbname=$db;charset=$charset", $user, $pass, $pdo_options);
}
catch(PDOException $e) {
   printf(
      'Erreur MySQL %s, ligne %d du fichier %s<br>%s',
      $e->getCode(),
      $e->getLine(),
      $e->getFile(),
      $e->getMessage()
   );
}
?>


Qu'en pensez-vous ?

Bonne journée
Thierry
Il me semble que ce code ne soit pas utile (code ci-dessous), puisque dans ton gabarit, tu déclares être en utf-8


header('Content-type: text/html; charset=utf-8');

Que veut dire ce code ?
C'est informer le navigateur que tu vas lui envoyer une chaine de caractères en utf-8 et qu'il pourra l'interpréter comme du html.
Modifié par niuxe (19 Jul 2019 - 18:51)