Accents transformés en cours de route.

Répondre
niconicochan
le 26/05/2014 à 18:26
niconicochan
Bonjour,

J'ai une page de formulaire et une page de traitement de formulaire.
Lorsque en tant qu'utilisateur, j'envoie des données dans ma base de données,
les accents ne sont pas convertis.

Pour résoudre le problème, j'ai:

- ajouté dans chacune des en-têtes de mes deux pages (formulaire et traitement de formulaire):
<meta http-equiv="Content-type" content="text/html; charset=UTF-8/>
J'ai également vérifié l'activation de l'encodage UTF-8 dans Dreamweaver
(Edition > Préférences > Nouveau document > Codage par défaut)

-ajouté en plus dans la page de traitement de formulaire:
mysqli_query("SET NAMES 'utf8'");

-choisi l'Interclassement utf8_general_ci pour tous mes champs dans l'interface de phpmyadmin

-dans le document httpd.conf, j'ai rajouté la ligne
AddDefaultCharset UTF-8 (je ne avais pas trop où la mettre, je l'ai mis tout en haut de la page)

Les accents rentrés dans le formulaire deviennent des signes bizarres une fois arrivés dans ma table sur phpmyadmin.

Quelqu'un pourra t-il m'aider?
LupusMic
le 27/05/2014 à 10:00
LupusMic
C'est peut-être un soucis de configuration au niveau de PMA. Pas dand l'interface, mais dans son fichier de configuration. Je n'utilises pas PMA, je n'en ai que de vagues souvenirs, mais il me semble qu'il faut lui indiquer comment gérer le codage des caractères dans un fichier config.inc.php (ou quelque chose dans ce goût là).
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
niconicochan
le 28/05/2014 à 08:36
niconicochan
Voici le contenu du fichier config.inc.php
Est-ce que tu aurais une idée de ce qu'il faut faire?
Moi j'en ai aucune.


<?php
/*
* This is needed for cookie based authentication to encrypt password in
* cookie
*/
$cfg['blowfish_secret'] = 'xampp'; /* YOU SHOULD CHANGE THIS FOR A MORE SECURE COOKIE AUTH! */

/*
* Servers configuration
*/
$i = 0;

/*
* First server
*/
$i++;

/* Authentication type and info */
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['AllowNoPassword'] = true;
$cfg['Lang'] = '';

/* Bind to the localhost ipv4 address and tcp */
$cfg['Servers'][$i]['host'] = '127.0.0.1';
$cfg['Servers'][$i]['connect_type'] = 'tcp';

/* User for advanced features */
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = '';

/* Advanced phpMyAdmin features */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['relation'] = 'pma_relation';
$cfg['Servers'][$i]['table_info'] = 'pma_table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma_column_info';
$cfg['Servers'][$i]['history'] = 'pma_history';
$cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
$cfg['Servers'][$i]['tracking'] = 'pma_tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma_userconfig';
$cfg['Servers'][$i]['recent'] = 'pma_recent';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma_table_uiprefs';

/*
* End of servers configuration
*/

?>
LupusMic
le 28/05/2014 à 11:04
LupusMic
Franchement, je n'utilise pas, ça fait longtemps que je n'ai pas eu l'obligation d'y toucher, je ne vais mettre les mains dans la merde aujourd'hui :-D

Désolé.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
niconicochan
le 03/06/2014 à 17:14
niconicochan
J'ai régler mon problème.
C'était beaucoup plus simple que ça.
Je n'ai pas eu besoin d'apporter des modifications dans xampp.
LupusMic
le 04/06/2014 à 17:32
LupusMic
Du coup c'était quoi le problème ? ^^;
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
niconicochan
le 05/06/2014 à 08:55
niconicochan
Il fallait que j'enlève les parties de HTML et de SGML tout en haut et tout en bas de
mes pages php (j'appelle une page php une page dont le nom contient une extension en .php).
Cela comprend les balises <html> ou </body> par exemple, ou encore la déclaration DOCTYPE
et l'élément de métadonnées pour le codage des caractères pour ce qui concerne le SGML.
Je doutais à juste titre de l'intérêt de ces portions de code, mais je ne pensais pas qu'elles
pouvaient mettre le bazarre.

Il a suffit que je les enlève.
Par contre, ce qui m'étonne quand même c'est que j'ai appris qu'on a deux solutions pour insérer
du html dans une page avec une extension en .php:
- les portions en html se trouvent en dehors de zones balisées <?php ... ?>
- les portions en html se trouvent dans des zones balisées <?php ... ?>,
mais à l'intérieur des ces zones elles doivent être "balisées" echo " ... "; pour
indiquer que ce sont des portions de html insérées dans des zones dédiées au php.
Moi, j'étais dans le premier de ces deux cas, je ne vois donc pas trop le problème avec le html.

Je suppose par conséquent que c'est les portions de SGML qui ont mis le bazarre
(la déclaration DOCTYPE et l'élément de métadonnées pour le codage des caractères).
LupusMic
le 05/06/2014 à 12:02
LupusMic
Attention à ne pas confondre les choses. HTML est fortement inspiré de SGML, c'est vrai, mais il n'y a pas de SGML en HTML.

Le doctype (commençant pas <!) ne peut pas contenir de spécification de charset. C'est le prologue XML (<?xml) qui le peu. Ou encore une balise <meta>, mais c'est pour dire au serveur web de servir le fichier selon un charset choisi.

En fait, on insère jamais de HTML dans PHP : c'est le PHP qu'on insère éventuellement au milieu de l'HTML. Ce changement de point de vue est assez important. PHP est originellement un langage permettant de créer simplement des templates HTML. C'est pour ça que, même quand il n'y a que du PHP dans un fichier, il faut le commencer par <?php : c'est le seul moyen de dire au parseur PHP "hey, ici commence le PHP".

echo est une fonction qui écrit les arguments fournis dans la sortie standard. Si tu ne sais pas ce que c'est, fais une recherche sur "UNIX standard I/O", ou "Unix entrées/sorties standard".
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
niconicochan
le 05/06/2014 à 16:29
niconicochan
Oui, le doctype est écrit en html.
Mais la balise meta avec le charset, c'est bien du SGML? (j'ai toujours pensé que c'est du SGML,
je ne me trompe pas?)

Concernant la réflexion que tu proposes, quand il n'y a que du php dans un fichier il s'agit en fait de php qu'on insère dans du html qui n'existe pas.
En tout cas, une remarque simple: quand on a un fichier avec que du php il n'est en effet pas nécessaire d'ajouter autre chose. Et si cet autre chose met la pagaille, je suppose qu'il s'agit des métadonnées.


J'ai vu les notions d'entrée standard et de sortie standard avec l'histoire de la vache qui rentre dans un hachoir et ressort en steak haché.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours