Se connecter avec
S'enregistrer | Connectez-vous

caracteres spéciaux et base de données

Dernière réponse : dans Programmation

Bonsoir,
Le contenu de ma BDD contient des caractères spéciaux. Je n'arrive pas à les afficher. J'ai changé la balise méta de la page, voilà ce que ça me fait :
- si je mets utf-8 : le contenu de la bdd s'affiche nickel mais le reste de la page non
- si je mets iso-8889-15 ou un autre iso : le contenu de la page est nickel mais c'est le contenu de la base qui passe pas

Dans la structure de ma base j'ai défini en latin1-swedish et ma page est au format ANSI. Je comprends vraiment rien à ces encodages... complètement perdu là lol. Merci !

Lassé par la pub ? Créez un compte
Expert Programmation

Déjà il faut que tu choissisent : UTF-8 ou ISO8859-15. A savoir que si tu es sous Windows les fichiers texte sont le plus souvent en ISO et en plus PHP gère mieux l'ISO. (cf strlen("é") qui peut renvoi 2 en UTF-8.

Donc dans ce cas, fichier et bdd en ISO et ensuite il faut vraiment éviter de changer. A savoir que les navigateur ne regarde pas la balise meta si l'en-tête HTTP spécifie un encodage. En configuration par défaut sous Debian/Ubuntu il spécifie. Dans ce cas soit tu change ta conf soit tu utilise la fonction header() de PHP :) 

Salut,
Merci pour ta réponse.
Voilà ce que j'ai fais :
- fichiers php en ANSI
- base de données en latin1_general_ci
Et c'est toujours pareil, voilà ce que ça me ressort :
"éé" pour des accents
C'est bizarre, quand je remplace latin1-swedish par general-ci ça reste sur swedish...
Je comprends rien de rien là. Soit je suis bête soit y'a un problème lol.
Merci

Maintenant ça me sort des points d'interrogation... Quelle m***e ces histoires de format, d'interclassement, de charset et de je sais pas quoi. Quelqu'un aurrait-il une solution pour afficher des champs d'une BDD contenant des accents svp? Quel type de champ utiliser (apparemment le TEXT a l'air plus que limité en caractères spéciaux, à moins que ce soit moi qui soit limité ;)  ) ? Quel format de page ? Quel interclassement ? etc
Encore merci !
PS : je crois que je vais faire mon site en anglais si ça continu
Expert Programmation

et ton en tete HTTP ? à priori je penche pour qu'il envoie du UTF-8. Fait affichage => encodage des caractères pour voir en quoi est mis ta page. pour voir le header HTTP utilise l'extension Live HTTP Header ou Web Developper Toolbar.

Par contre, je viens de me rendre compte d'un truc. Quand je lance PhpMyAdmin à partir d'oVH, c'est à partir de là que je gère ma base et que mes données sont rentrées, il y a marqué : French(utf-8). (à l'endroit où l'on doit renseigner les champs utilisateur, mot de passe etc.
J'ai mis en iso mais ça ne change rien.
Voilà ce que j'ai dans mysql :
"Jeu de caractères pour MySQL: UTF-8 Unicode (utf8) " mais je peux pas y changer.
Interclassement : "latin1_general_ci"
Expert Programmation

A priori les caractère spéciaux qui s'affiche sont typique de caractère en UTF-8 mais dont le PC client interprette en ISO.

ISO = 1 octet
UTF = 2 octet

résultat si tu as un caractère en UTF mais que tu spécifie ISO (cf entete HTTP) alors il affiche 2 caractères erronés.

Passe donc ton entete http en UTF-8.
Lassé par la pub ? Créez un compte
Tom's guide dans le monde