Aller au contenu

Sujets conseillés

Posté

Bonjour a tous,

Je suis en train de me faire mon site et comme je veux être conforme au standard j'ai décidé de tout faire en "utf-8". J'ai donc mes scripts en "utf-8" ainsi que ma base de donnée MySQL.

Problème quand j'essaye d'afficher ma table tous les lettres accentuées sont remplacées par un point d'interrogation dans un losange. Dans firefox, je change l'encodage des caractères pour voir, miracle en ISO-8859-1 les caractères accentué de la BDD sont bien affiché mais plus le reste de la page.

Je ne vois d'ou cela peut bien venir surtout que quand je fais afficher ma base dans PhpMyAdmin les lettres sont normales !!!

Si quelqu'un a une idée une piste, un début de solution je suis preneur.

Merci d'avance de votre aide.

Ma config : Debian testing Apache/2.2.3 (Debian) DAV/2 SVN/1.4.2 PHP/5.2.0-10+lenny1 MySQL: 5.0.38 phpMyAdmin - 2.10.1deb2

Posté

Bon personnes n'a d'idée ???

En cherchant j'ai trouvé cette fonction tres pratique :

mysql_client_encoding

Elle retourne le nom du jeu de caractères utilisé par le client MySQL plus de détail a cette adresse :

Manuel MySQL : mysql_client_encoding

donc maintenant je sais que j'utilise du latin-1 soit de l'ISO-8859-1, le pourquoi ? je ne sais pas encore mais je trouverais,un jour ou l'autre :rolleyes:

Maintenant j'aimerais savoir :

Comment on fait pour dire a MySQL qu'on veut de l'utf-8 ?

Peut on le préciser a la connections a la BDD ?

En attendant une aide, je vais potasser le code source de phpmyadmin après tout, il arrive bien a l'afficher correctement, donc la réponse doit y être.

Merci d'avance. :)

Posté

Alors :

Tu veux utiliser de l'UTF8 ? Ok, mais :

L'iso est aussi 'conforme aux standards', il s'agit juste d'un autre standard :)

Pour sortir des données en utf8 de la base de données, il aurait fallut que tu les entres en utf8.

Là, apparemment, tu les as entré en iso, et tu veux les sortir en utf8.

C'est ce que ne comprend pas ta page. Elle essaie d'afficher du utf8, alors que c'est de l'iso, et lorsqu'elle ne connait pas un caractère, elle affiche un '?' :)

L'idéal serait de vider ta base, puis de la remplir avec de l'utf8. Alors tu pourrais en sortir ce que tu veux.

La seconde solution serait de faire une mise à jour (via un script qu'il te faut faire) de tes données déjà en base, vers de l'utf8, afin de n'avoir que cet encodage en base.

La 3e solution est des moins élégantes, à savoir :

Stocker de l'iso, et encoder à l'affichage (via la fonction utf8_encode par exemple), pour afficher de l'utf8 à partir d'iso.

Voilà,

Nicolas.

Posté

Merci a vous pour vos réponse,

J'ai ajouté :

mysql_query("SET NAMES 'utf8'");

au script après la connection a la base de donnée et maintenant ça marche nickel

bien sur je pourrais également modifier la configuration de mysql mais je ne pourrrais pas le faire chez free donc l'ajout de cette petite ligne est bien plus pratique.

:thumbsup: Super lien Dudu je le remet pour qu'il soit bien visible [edit modérateur]Pas trop quand même :)[/Edit]

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...