Voici mon code, j'ai ajouté htmlentitie en pensant que le problème serait réglé mais en vain !!!
<?php
while($valeurlud = @mysql_fetch_array($sql)){ // début de la boucle qui se terminera à la fin des enregistrements
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 3 nov. 2009 à 06:24
Salut,
htmlentities n'a rien à voir là dedans, ton problème est un problème d'encodage (sans doute une sortie UTF8 affichée en ISO-8859)
Dans ce genre de cas le mieux est d'harmoniser l'encodage de tous les softs en jeu :
- l'éditeur
- apache
- php
- mysql
- ...
Tu peux également t'en sortir en convertissant dynamiquement les résultats via CHARACTER SET (mysql) ou mb_convert_encoding (php)
cs_perles
Messages postés74Date d'inscriptionsamedi 7 juillet 2007StatutMembreDernière intervention29 mars 2015 8 nov. 2009 à 22:07
Bonjour,
Je pense que vous avez raison, mon code doit être en ISO-8859.
Les données ont été enregistrées au format UTF-8, et le navigateur les affiche en pensant avoir affaire à de l'ISO.
Je ne comprend pas ce que je peux faire pour régler mon problème.
J'ai visité les sites :
cs_perles
Messages postés74Date d'inscriptionsamedi 7 juillet 2007StatutMembreDernière intervention29 mars 2015 10 nov. 2009 à 18:57
Bonjour,
J'ai ajouté le code mysql_query("SET CHARACTER SET 'utf8'");
dans mon programme.
<?php
include("images/connexion.php"); // ouverture de la connexion
mysql_query("SET CHARACTER SET 'utf8'");
$sql = mysql_query("SELECT * FROM articles WHERE AR_Type='BAG' And AR_Code='PAGE1' ORDER BY articles.AR_Ordre;"); // voici la requette permettant d'aller chercher les messages...
?>
cs_perles
Messages postés74Date d'inscriptionsamedi 7 juillet 2007StatutMembreDernière intervention29 mars 2015 10 nov. 2009 à 19:03
Bonsoir,
J'ai fait une autre modification.
<?php
include("images/connexion.php"); // ouverture de la connexion
mysql_query("SET CHARACTER SET 'utf8'");
$sql = mysql_query("SELECT * FROM articles WHERE AR_Type='BAG' And AR_Code='PAGE1' ORDER BY articles.AR_Ordre;"); // voici la requette permettant d'aller chercher les messages...
?>etc.......
<?php
while($valeurlud = @mysql_fetch_array($sql)){ // début de la boucle qui se terminera à la fin des enregistrements
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 10 nov. 2009 à 20:56
Arf, oui, bien vu.
J'étais parti sur le fait que tu n'avais plus de htmlentities étant donné mon premier message.
En effet, htmlentities ne règle en rien ton problème initial (avant que tu l'utilises "en pensant que ..."), par contre sa présence peut poser problème si l'encodage n'est pas ISO8859 et que l'on ne renseigne pas son troisième argument.
Ce qu'il doit se passer :
- la sortie de ta DB est encodé ISO-8859
- ton script PHP / page WEB est elle en UTF8
= > dans cette config les données ne sont pas correctement affichées puisqu'il y a discordance d'encodage
- le fait d'ajouter SET CHARACTER SET 'utf8' fait que la sortie DB change en utf8
=> à ce moment c'est le htmlentities qui pose problème car il attend par défaut un encodage ISO-8859
- le fait de lui dire sur quel encodage travailler (le troisième argument) fait que tout rentre dans l'ordre
Valide tout de même :
- vire le htmlentities en faisant directement un
echo $valeurlud["AR_TLong"];
=> en principe les données doivent apparaitre convenablement
- vire ensuite le SET CHARACTER SET
=> tu dois te retrouver avec ton pb initial
... dis moi si j'ai dit une bêtise
Concernant le htmlentities tu peux peut être t'en passer (l'inutile est inutile !!)
A vu de nez tu n'as aucune raison de t'en servir.
cs_perles
Messages postés74Date d'inscriptionsamedi 7 juillet 2007StatutMembreDernière intervention29 mars 2015 10 nov. 2009 à 21:18
Bonsoir,
Je modifie pour voir :
<?php
include("images/connexion.php"); // ouverture de la connexion
mysql_query("SET CHARACTER SET 'utf8'");
$sql = mysql_query("SELECT * FROM articles WHERE AR_Type='BAG' And AR_Code='PAGE1' ORDER BY articles.AR_Ordre;"); // voici la requette permettant d'aller chercher les messages...
?>
etc...
cs_perles
Messages postés74Date d'inscriptionsamedi 7 juillet 2007StatutMembreDernière intervention29 mars 2015 10 nov. 2009 à 21:19
Bonsoir,
Je modifie pour voir :
<?php
include("images/connexion.php"); // ouverture de la connexion
$sql = mysql_query("SELECT * FROM articles WHERE AR_Type='BAG' And AR_Code='PAGE1' ORDER BY articles.AR_Ordre;"); // voici la requette permettant d'aller chercher les messages...
?>
etc...
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 10 nov. 2009 à 21:55
y a un truc pas logique là dedans.
Si j'étais toi je ne me limiterai pas à constater que ça fonctionne mais chercherai le pourquoi du comment car tôt ou tard les problèmes reviendront et ils seront sans doute plus complexe à résoudre.
D'après ce que tu me dis j'ai maintenant l'impression que les données de mysql sont en UTF-8 mais que ta page n'y est pas.
Ta page est elle en ligne ? Si oui peux tu fournir l'adresse ?
En l'affichant, regarde quel encodage est utilisé par le navigateur :
sous firefox :
Affichage > Encodage des caractères
sous IE :
Affichage > Codage
Force le ensuite a utiliser l'autre encodage (ISO 8859 <=> utf8)
Dans quel cas "noires et facettes fumées" apparait normalement ?
cs_perles
Messages postés74Date d'inscriptionsamedi 7 juillet 2007StatutMembreDernière intervention29 mars 2015 10 nov. 2009 à 22:18
Bonsoir,
J'ai modifié le bagues1.php
<?php
include("images/connexion.php"); // ouverture de la connexion
$sql = mysql_query("SELECT * FROM articles WHERE AR_Type='BAG' And AR_Code='PAGE1' ORDER BY articles.AR_Ordre;"); // voici la requette permettant d'aller chercher les messages...
?>
etc...
Affichage de la ligne
Bague artisanale en perles de rocailles noires et facettes fumées
http://infoisa1600.isuisse.com/ Unicode (UTF8)
Mais Page de r�sultat :
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 11 nov. 2009 à 09:40
Je suis allé faire un tour, et ca se confirme :
- MySQL sort bien de l'UTF8
- ta page est en ISO-8859
Dès lors tu ne feras que rencontrer des soucis (conversions d'encodage à tout va).
Comme je le disais au début :
Dans ce genre de cas le mieux est d'harmoniser l'encodage de tous les softs en jeu :
- l'éditeur
- apache
- php
- mysql
- ...
Afin de simplifier les choses par la suite tu dois choisir :
- soit tu passes tout en utf8
=> sans doute plus long et complexe, mais conseillé
=> tu ré enregistres tous tes fichiers en utf-8 (attention des accents risquent de sauter)
=> tu spécifies dans chaque page HTML/PHP l'encodage (charset=UTF-8)
- soit tu passes tout en ISO
=> il suffit alors de modifier l'encodage de sortie MySQL
Tu devrais également t'en sortir si tu fais une requête "SET CHARACTER SET latin1" après chaque connexion, mais ça fait une requête inutile à chaque fois
N'oublie pas de faire un backup complet avant de faire des modifs importantes.
Si une migration en utf8 te semble trop complexe reste en ISO :o)
cs_perles
Messages postés74Date d'inscriptionsamedi 7 juillet 2007StatutMembreDernière intervention29 mars 2015 11 nov. 2009 à 20:34
Bonjour,
Merci de ta réponse, je comprend mieux pourquoi mon affichage
était si bizzare. Il faut absoluement que j'harmonise mon encodage.
Sinon, je vais continuellement avoir des soucis.
cs_perles
Messages postés74Date d'inscriptionsamedi 7 juillet 2007StatutMembreDernière intervention29 mars 2015 11 nov. 2009 à 22:00
Bonjour,
Je modifie en ce moment mon programme bagues1.php, j'ai mis la page avec la propriété UTF8. J'ai modofié mon texte saisit manuellement.
Par exemple résultat.
Pour le programme bagues1.php, cela fonctionne.