Bonjour,
comme j'avais ajouté un post à un fil marqué "résolu", je crée un nouveau fil non résolu (pour le moment) et demandant à regarder ici.
Version imprimable
Bonjour,
comme j'avais ajouté un post à un fil marqué "résolu", je crée un nouveau fil non résolu (pour le moment) et demandant à regarder ici.
Bonjour,
Si tu veux avoir des réponses, au lieu de faire un lien vers une autre discussion :
-> écris et décris ICI le problème, et pose ta question clairement (en tenant compte des réponses déjà données) ok ?
Salut,
L'avantage avec un fichier contenant au moins un caractère accentué est que notepad++ saura détécté automatiquement le jeu de caractères à l'ouverture du fichier.
Si on sauvegarde le texte ci-dessous au format UTF-8 (sans BOM) :
àèìòùEt bien, à la prochaine ouverture du document nous pouvons constater dans la barre d'état de Notepad++ l'encodage détecté :
ANSI as UTF-8
L'inconvenient avec un fichier ne contenant que des caractères ASCII est que Notepad++ utilisera le jeu de caractère ANSI.
Si on sauvegarde le texte ci-dessous au format UTF-8 (sans BOM) :
àèìòùEt bien, à la prochaine ouverture du document nous pouvons constater dans la barre d'état de Notepad++ l'encodage détecté :
ANSI
Je te déconseille donc l'utilisation des entités HTML qui n'a plus lieu d'être aujourd'hui car les caractères accentuées sont très bien traités aujourd'hui (côté serveur comme côté client).
Cela ne doit quand-même pas nous dispenser de déclarer le charset dans l'entête du document HTML bien entendu.
Code:
1
2
3 <?php header( 'content-type: text/html; charset=utf-8' ); ?>
Nous noterons au passage que le caractère numéro 40802 est un idéogramme chinois. On peut se demander d'où sort ce nombre.
Normal, j'avais écrit en chinois ...:mouarf:Citation:
Nous noterons au passage que le caractère numéro 40802 est un idéogramme chinois
Sinon, pour répondre à Bisûnûrs, j'avais écrit, comme il l'indique, le code avec l'accent, puis fait "encodage en utf-8 (sans BOM)", et c'est là qu'il l'a traduit en chinois...:calim2: (évidemment, je comprends pas).
En général il faut plutôt faire "convertir en utf-8 (sans BOM)" et non pas encoder.
Encoder sert quand on n'a encore rien écrit et qu'on veut dire l'encodage à utiliser, ou bien que le fichier ouvert n'est manifestement pas ouvert dans le bon encodage, et permet ainsi d'en essayer un autre. Bref encoder ne modifie pas le binaire du fichier, il sert juste à lire ce binaire avec un autre encodage.
Pour convertir d'un encodage à un autre, utiliser "convertir" (quelque part, ça c'est un peu logique.)
Merci ; je n'avais pas vu...
En fait, même en faisant "convertir" au lieu de "encoder" sous Notepad++, ça m'affiche quand même des caractères bizarres à la place des accents :
Code:
1
2
3 header( 'content-type: text/html; charset=utf-8' ); --- echo 'Votre vote est enregistré;<br>';
alors que faire ?Citation:
Votre vote est enregistré;
Ça ne devrait pas arriver. On peut voir une URL de démonstration ?
Oups, j'ai mis un temps fou à voir ce post ! En fait, le formulaire était sur intranet (pas l'action), donc j'ai tout mis sur internet pour pouvoir le montrer et j'ai corrigé quelques bugginets ; pour l'instant, ce n'est qu'au stade d'essai, mais il y a quand même déjà derrière une base MySQL...(et pour voir le problème, il suffit de voter et "envoyer"). Par endroits, ça a l'air de marcher, mais c'est grâce au recours à la méthode archaïque (é , &ccedesdil; , etc)
Ca ne risque pas de s'afficher correctement si tu ne mets pas TOUTES les balises HTML nécessaires dans le fichier action_enquete.php
Idem pour res_enquete.php
J'ai fait ça :
res_requete.php :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 <html> <head> <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"> <title></title> </head> <body> <?php header( 'content-type: text/html; charset=utf-8' ); --- ?> </body> </html>
et action_enquete.php :
mais ce n'est pas mieux...Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 <html> <head> <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"> <title></title> </head> <body> <?php header( 'content-type: text/html; charset=utf-8' ); --- ?> </body> </html>
La logique à toute épreuve. On met UTF-8 en PHP mais ISO-8859-1 en HTML.
Et au passage, un header en PHP se met avant tout code HTML.
:mouarf:J'avais compris de travers et remplacé le UTF-8 par ISO-8859-1 avant de m'apercevoir que c'est ce que j'avais fait ! Merci de ta vigilance car je ne m'en étais pas rendu compte...