Problème d'affichge des caractère spéciaux

Résolu/Fermé
Myst3ry Messages postés 10 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 5 février 2008 - 3 févr. 2008 à 21:02
 andyjp - 16 mars 2010 à 14:25
Bonjour à vous tous,

J'ai un problème que plusieurs autres personnes ont....J'ai cherché sur le forum mais aucun topic ne résout mon problème!(Peut-être que je ne comprend pas parfaitement les explications). Bref voilà mon problème, j'ai une BDD Mysql et elle fonctionne parfaitement sauf que j'ai décidé de faire un endroit pour toutes les news(table). J'usque là sa fonctionne, pour commencé je me suis pas cassé la tête avec une page avec un formulaire et tout. Pour tester j'ai été directement dans la BDD pour ajouter une new dans la table (je me suis aussi occupé de mêttre des <br /> pour passer des ligne etc...) car j'introduit le contenu de cette new entre <p> et </p> dans ma page HTML, mais aussitôt que j'arrive pour afficher la page de news le texte s'affiche sauf (comme vous l'aurez devinné) les é, à, ', etc. Il n'y a pas de ? à leur place comme d'autre utilisateur disent... moi il à juste rien dutout!

Une phrase comme sa:
là j'ai mangé des tomates.
Devien:
l jai mang des tomates.

Je ne comprend pas pourquoi sa ne s'affiche pas correctement...

Merci à celui qui aurat une piste à me fournir!
Si mon problème n'est pas clair, précisé le moi!

Myst3ry / Maxime
A voir également:

15 réponses

croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
3 févr. 2008 à 21:15
Les caractères peuvent être codés de différentes manières au niveau de ta base SQL et au niveau de ta page HTML générée par PHP et il nécessaire que ce soit cohérent d'un bout à l'autre :

Au niveau HTML tu dois avoir dans le bloc <head> une balise du genre :
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
(urf-8 peut être remplacé par qqch comme iso-8851-1 mais utf-8 est préférable car plus ouvert).

Ce qi est important c'est que les caractères lus dans par mySQL utilise le même codage : la commande mySQL SET CHARACTER SET UTF8 peut, entre autres, être utilisée. En PHP :
$query = "SET CHARACTER SET utf8";
mysql_query( $query );

Mais tout ceci dépend de ta version mysql, de la manière dont ta table a été créée...

Le meiux est, comme toujours, de bien comprendre : dans ce cas la cohérence de bout en bout du codage est essentielle.

lhttp://electron-libre.fassnet.net/utf8.php te donnera des infos utiles.
7
Myst3ry Messages postés 10 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 5 février 2008 3
3 févr. 2008 à 22:10
Sa ne fonctionne pas plus :S

Mais comment savoir si ma BDD est par défault en ISO ou en UTF8
Car j'ai pas des caractère super compliqué lol et je suis sur que ISO fait corectement le travail

Entk Merci de ton aide!
1
Myst3ry Messages postés 10 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 5 février 2008 3
4 févr. 2008 à 01:14
Re bonjour!

Voici... La ligne!

ENGINE=InnoDB DEFAULT CHARSET=latin1

Cela signifie que c'est du ISO non? et oui j'ai :
Content-Type" content="text/html; charset=iso-8859-1" /> Dans mon HTML
mais je crois que c'est normal que sa ne fonctionne pas...Car Si je fais:
(EN CONSOLE DIRECTEMENT SUR LE SERVEUR)
Select * from membre;
Les Accents ne sont PAS présent! la non plus! Donc le problème est survenu quand j'ai tenté d'envoyer la NEW dans mon serveur car je les fais sa aussi MANUELLEMENT SUR LE SERVEUR LUI MÊME pas par PHP.
Car je vais m'expliquer un peu: Sur mon ordinateur WINDOWS j'ai WAMP qui me pertmet de SIMULER un serveur dans PHPMYADMIN J'ai créé la table graphiquement (plus simple) et j'ai ajouté une entré. Ensuite j'ai été dans exporté et j'ai pris le code dedant le fichier SQL et la introduit dans la console de mon serveur LINUX qui est juste à coté de moi! (je ne sais pas si c'est clair). Donc j'ai avant tout mis sa dedant mon serveur:

CREATE TABLE `news` (
`ID` int(11) NOT NULL auto_increment,
`TITRE` text NOT NULL,
`IMG_SCR` text NOT NULL,
`DATE` text NOT NULL,
`TYPE_NAME` text NOT NULL,
`TYPE` int(11) NOT NULL,
`TEXT` longtext NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;


Ensuite J'ai juste ajouté:

INSERT INTO `news` (`ID`, `TITRE`, `IMG_SCR`, `DATE`, `TYPE_NAME`, `TYPE`, `TEXT`) VALUES
(1, 'L''iPod Touch fait fureur', 'images/templates/new1.png', '2 Février 2008', 'new', 1, '<p>Le iPod Touch est la nouvelle génération pour Apple.\r\nMaintenant tactile, il fait l’envis de tous. Écouter de la musique, des vidéos et regarder des images son des chose que vous pourrai facillement faire sur l’iPod Touch et le tout dans un environement très jolie qui peu ressembler un peu à Vista. Il est conpact, légé, joli et très divertissent... le cadeau parfait quoi! Pour plus d’info sur ce magnifique iPod rendez-vous au:</p><br /><p><a href="https://www.apple.com/fr/ipod-touch/">www.apple.com</a></p><br /> <p>Bonne navigation, mais faite attention à votre porte feuille!</p>');


Donc il y as eu un problème dans l'envois le serveur a donc pas prit les accents.
Automatiquement on vois que PhpMyAdmin (quand j'ai fais ENTRÉE) à changé de ligne et a mi dans le code "\r\n". On vois aussi que les Accents sont là. mais avec le SELECT TEXT FROM news; J'obtien: (TEXT étant l'endroit ou est le contenue entier, Sans le titre, la date, etc. etc.)

<p>Le iPod Touch est la nouvelle gnration pour Apple.
Maintenant tactile, il fait l.envis de tous. couter de la musique, des vidos et regarder des images son des chose que vous pourrai facillement faire sur l.iPod Touch et le tout dans un environement trs jolie qui peu ressembler un peu Vista. Il est conpact, lg, joli et trs divertissent... le cadeau parfait quoi! Pour plus d.info sur ce magnifique iPod rendez-vous au:</p><br /><p><a href="https://www.apple.com/fr/ipod-touch/">www.apple.com</a></p><br /> <p>Bonne navigation, mais faite attention votre porte feuille!</p> |

LES /r/n on disparue se qui est normal mais les accents aussi!

J'espère que c'est clair!
Dsl si c'est le contraire et encore merci d'avoir répondu si vite!
1
Myst3ry Messages postés 10 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 5 février 2008 3
4 févr. 2008 à 12:55
Non no tu ne comprends pas :S :D
Le PphMyAdmin je m'en sert seulement pour me faciliter la tache dans la création d'une table ou d'une entré...
Mon serveur Linux lui ne fonctionne pas avec PphpMyAdmin il est en console tout simplement.
Donc j'ouvre en SSH mon serveur Linux où j'ai Mysql, Je me conecte sur un user ensuite je fait: "su" qui me demande le mot de passe je transfert root ensuite je me connecte a MySQL par Mysql -u root -p. J'entre mon passe je vais dans ma base de donné. pui la j'ai entré la ligne INSERT c'ette ligne exactement:

INSERT INTO `news` (`ID`, `TITRE`, `IMG_SCR`, `DATE`, `TYPE_NAME`, `TYPE`, `TEXT`) VALUES
(1, 'L''iPod Touch fait fureur', 'images/templates/new1.png', '2 Février 2008', 'new', 1, '<p>Le iPod Touch est la nouvelle génération pour Apple.\r\nMaintenant tactile, il fait l’envis de tous. Écouter de la musique, des vidéos et regarder des images son des chose que vous pourrai facillement faire sur l’iPod Touch et le tout dans un environement très jolie qui peu ressembler un peu à Vista. Il est conpact, légé, joli et très divertissent... le cadeau parfait quoi! Pour plus d’info sur ce magnifique iPod rendez-vous au:</p><br /><p><a href="https://www.apple.com/fr/ipod-touch/">www.apple.com</a></p>&l t;br /> <p>Bonne navigation, mais faite attention à votre porte feuille!</p>'); (VIA CONSOLE ENCODE)

J'ai juste fait faire le code par PhpMyAdmin donc peut être que de là vien le problème?
Mais on voit que une fois que le serveur a enregistré et que je fait dans la console SELECT TEXT FROM news;
Bein il me sort sa :

<p>Le iPod Touch est la nouvelle gnration pour Apple.
Maintenant tactile, il fait l.envis de tous. couter de la musique, des vidos et regarder des images son des chose que vous pourrai facillement faire sur l.iPod Touch et le tout dans un environement trs jolie qui peu ressembler un peu Vista. Il est conpact, lg, joli et trs divertissent... le cadeau parfait quoi! Pour plus d.info sur ce magnifique iPod rendez-vous au:</p><br /><p><a href="https://www.apple.com/fr/ipod-touch/">www.apple.com</a></p>&l t;br /> <p>Bonne navigation, mais faite attention votre porte feuille!</p> |

Se qui veut dire qu'il a mal enregistré...
Car oui je peu faire un code PHP qui me permet de faire aparaitre cette ligne mais sa change rien elle va bien r'envoyer ce qu'il y à dans le serveur....

Et pour répondre à ta question J'ai fait apelle au fichier EXPORT de phpMyAdmin de sur mon ordinateur Windows et j'ai fait un copié collé sur ma fenettre SSH de mon serveur.

Comment vérifier en quoi il est codé??

Merci Encore!
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Myst3ry Messages postés 10 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 5 février 2008 3
3 févr. 2008 à 22:03
Salut,

Merci beaucoup je vais essayer se que tu m'a dit et regarder ton lien! merci à toi!
0
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
3 févr. 2008 à 22:27
Compte-tenu des caractères "simples", tu as donc une balise <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> ? Si ce n'est pas le cas, il faut mettre cette balise

Pour connaître le codage de ta table, utilise la commande show create table ... : le résultat se termine par qqch comme : DEFAULT CHARSET=latin1 ou utf8.

Tu peux aussi faire des test successifs dans ton programme php pour savoir le codage reçu de mysql : essaye par exemple utf8_decode qui te transforme la chaine reçue de mysql en iso-8859-1.
0
Myst3ry Messages postés 10 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 5 février 2008 3
4 févr. 2008 à 01:20
Donc Cela signifi que le problème n'est pas dans l'AFFICHAGE? car il affiche bien se qu'il y à dans mon entré! car dans mon serveur ya pas les accent donc il renvoit BIEN les infos!

Merci

(p.s. Quand je dit mon serveur LINUX et Windows a coté de moi Si tu n'a pas compris, je voulais dire que j'ai 2 ordinateurs 1 à côté de l'autre Un sous Windows et l'autre sous LINUX.)

Salut!
0
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
4 févr. 2008 à 10:13
Le pb semble donc bien être au niveau de l'insert par phpMyAdmin.

Comment effectue-tu cet INSERT ?

1. en tapant directement ou collant la commande insert dans la fenêtre "SQL" de phpMyAdmin : dans ce cas je ne vois pas d'où peut provenir l'erreur . Il te faudra tatonner jusque la solution

2. en appelant un fichier dans le fenêtre "IMPORT" de phpMyAdmin : dans ce cas vérifie la manière dont est codé ton fichier importé. Il ne doit pas être en latin1/iso-8859-1 mais dans un autre codage qu'il est difficle de deviner sans tripatouiller le fichier ou bien réflechir à la manière dont il a été élaboré.
0
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
4 févr. 2008 à 13:34
Je te propose la démarche suivante :

1. taper directement au clavier la commande INSERT dans ta fenêtre SSH : avec un texte bidon contenant des caractères accentués. Par exemple :

INSERT INTO `news` (`ID`, `TITRE`, `IMG_SCR`, `DATE`, `TYPE_NAME`, `TYPE`, `TEXT`) VALUES
(1, 'avec éèçà', 'images/templates/new1.png', '2 Février 2008', 'new', 1, 'avec éèçà');

2. vérifier ce que tu as dans ta table news :
- si les caractères accentués ne sont pas là c'est que tu as un pb de config sur ton système Linux. Commence par voir la config de SSH
- si les caractères accentués sont là c'est que ton pb réside dans le processus employé pour générer ta commande INSERT par phpMyAdmin : de toutes manières ton système cible utilisera une procédure automatisée à travers un formulaire et du php générant la commande Insert. Tu devrais construire dès maintenant tout ceci.

Remarque : ton pb doit aussi s'appliquer au champ TITRE, je l'ai intégré dans le test suggéré.
0
Myst3ry Messages postés 10 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 5 février 2008 3
4 févr. 2008 à 21:30
Je crois que c'est SSH car aussitôt que je fais du COPIE COLLER dans ma fenêtre SSH sans même rien faire ni exécuter la ligne tout les é à ou etc. ont disparue :S J'ai même essayé de faire la touche "é" 45Fois! rien ne saffiche à l,écran donc c'est peutêtre mon SSh qui est mal configuré....Oui si je fais le bouton ACCENT il va mêtre plein d'accent mais aussitôt que je combine 1 ACENT avec une lêttre rien ne se passe il n'affiche rien dutout!

Si tu sais comments voir comment est configuré SSH Merci de me donner des piste :D:D:D
Sinon si tu crois que c'est au chose dit le moi....


Salut! Et Merci!
0
Myst3ry Messages postés 10 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 5 février 2008 3
5 févr. 2008 à 00:28
J'ai fais des test qui confirme....
Avant de me connecter quand il faut que je marques un USERNAME et un PASS sur mon serveur je peux mêttre des "é à è" mais aussitôt que je me conecte la tout les touche ou combinaison de touche qui donne des chose du genre"é à etc." son désactivé (on dirait) car si je tente d'en rentré un (un é exemple) j'entend un petit "BIP!" dans met haut parleur :D ou si je fais la touche ` DEUX fois la oui ya 2 `` Qui vont apparaitre mais si je fais ` UNE fois c ok j'usqua ce que je rajoute la lêttre e ou a J'entend encore le petit "BIP!" :D donc il ne veut pas que j'entre des accent avec des lêttre :D Donc je sais pas quoi faire....Alors peut être que tout met é je doit les écrire du genre "&...."où "...." est éguale au code de l'accent aigue ou etc.

C'est peut être flou se que je dit fait moi préciser si tu ne comprends pas!

SAlut et encore encore MERCI!
0
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
5 févr. 2008 à 09:35
Ecris le php que tu utilisera pour mettre à jour ta base sans passer par php.
0
Myst3ry Messages postés 10 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 5 février 2008 3
5 févr. 2008 à 22:47
Bon voila après des test sa fonctionnes parfaitements! Merci bcp j'avais mal configuré mon serveur là sa fonctionne NIKEL

Merci mille fois!!!!
0
Myst3ry Messages postés 10 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 5 février 2008 3
5 févr. 2008 à 22:48
oops Pour récapituler mon serveur rentrait en comflit avec le language ISO donc j'ai mis mon serveur en ISO aussi et la impect!
0
Bonjour, j'ai aussi un soucis d'accent peux tu me dire où l'on met le choix des caractères sur le serveur

car j'ai tout mis en utf8 pour que tout soit nickel et rien ne marche il fail comme si le serveur fonctionnait en iso !!
0
bonjour, quel codage de caractere choisir? entre utf8 , europe occidentale isio , etc.. POUR RECEVOIR DES MESSAGES ECRITS NORMALEMENT en francais sans lettres transformees comme - " rAeponsA" POUR LE MOT/(' REPONSE ) merci pour ce conseil
0