Problème d'encodage avec BDD

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème d'encodage avec BDD

par AB » 25 juin 2009, 21:04

2. Quand je mets "header('Content-Type: text/html; charset=UTF-8');", ça me retourne un message d'erreur : Warning: Cannot modify header information - headers already sent by (output started at /homez.10/monsite/ma page.php:2) in /homez.10/monsite/mapage.php on line 2
Si tu dois mettre cette ligne, il est conseillé de la mettre au début de ton code php (le plus haut possible dans ta page) pour éviter cette erreur.

par stopher » 25 juin 2009, 14:00

Les quelques lignes que je t'ai donné sont à mettre dans le fichier de configuration de mysql my.cnf

Puis tu redémarres mysql ...

Apres tu n'as donc plus besoin de mettre partout la requête SET NAMES ...


Ch.

par EvaristeG » 25 juin 2009, 13:45

Bonjour, et merci pour vos réponses.

1. D'abord, htmlspecialchars_decode() ne fonctionne pas car ce qui est affiché ne ressemble pas à, par exemple, � mais à un losange rempli avec un "?" à l'intérieur.

2. Quand je mets "header('Content-Type: text/html; charset=UTF-8');", ça me retourne un message d'erreur : Warning: Cannot modify header information - headers already sent by (output started at /homez.10/monsite/ma page.php:2) in /homez.10/monsite/mapage.php on line 2

3. Le code donné par stopher, je ne sais pas quoi en faire ... Où le mettre exactement ?

EDIT : j'ai mis un "mysql_query("SET NAMES 'utf8'");" juste après la connexion à ma BDD, et celà fonctionne ...

par AB » 24 juin 2009, 22:48

Peut-être aussi envoyer une entête header('Content-Type: text/html; charset=UTF-8'); au début de ton script...
Plus d'infos dans ce tuto http://www.phpfrance.com/forums/voir_sujet-245062.php

par stopher » 24 juin 2009, 22:00

Salut ,

Tout dépend aussi comment tu as enregistré ces données dans ta base ...

Tu peux donc utiliser la requête SET NAMES avant toute requête d'insertion , ou simplement modifier une fois pour toute ton my.cnf

Code : Tout sélectionner

default-character-set=utf8 default-collation=utf8 collation_server=utf8_general_ci character_set_server=utf8 skip-character-set-client-handshake
Test ensuite avec de nouveau enregistrements ..

Ch.

par momox » 24 juin 2009, 21:31

Et SET NAMES UTF-8 passé en requête avant de faire les premiers SELECT.

par sylvaing26 » 24 juin 2009, 21:16

et avec htmlspecialchars_decode() ?

Problème d'encodage avec BDD

par EvaristeG » 24 juin 2009, 19:22

Bonjour.

Je suis en train de créer un site qui fait appel à certaines données de ma BDD, encodée en uft8.
Pour infos :

Jeu de caractères pour MySQL: UTF-8 Unicode (utf8)
Interclassement pour la connexion MySQL: utf8_bin
Ma table est elle aussi en utf8_bin

Le code suivant :

Code : Tout sélectionner

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link REL="StyleSheet" TYPE="text/css" HREF="css/style.css"> </head> <body> <? include("connexion.php"); $query = mysql_query("SELECT * FROM matable WHERE id='1' "); $r = mysql_fetch_array($query); echo $r[prenom]; ?> </body> </html>
me sort le prénom avec un caractère bizarre à la place des caractères accentués, et ce malgré le fait que mon fichier source soit enregistré en uft8.

Je ne vois réellement pas pourquoi ... Quelqu'un aurait-il une idée ?