11521 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
Modérateur
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
Modérateur
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
Modérateur
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)