Page 1 sur 1

Problème encodage

Posté : 28 mai 2013, 16:45
par Stalker
Bonjour.

Dans mon site j'affiche un texte stocké dans ma base de données. Comme le site est en français il y a des problèmes avec les accents: mon texte est affiché avec des <?> partout! Je ne trouve pas comment configurer la base ou la table pour que ça marche et je ne sais pas comment régler le problème au niveau de la requete ou du script php.

Pouvez vous m'aider s'il vous plait?

Pour information ma base est sur ipage, les personnes utilisant cet hébergeur et familiers avec son interface seront peut être plus aptes à me conseiller.

Re: Problème encodage

Posté : 28 mai 2013, 20:30
par moogli
salut,


de quoi avancer avec le tuto sur l'encodage faq-tutoriels/encodage-utf-t245062.html


@+

Re: Problème encodage

Posté : 28 mai 2013, 21:47
par Stalker
Hum ça ne m'aide pas vraiment.

Mon PHP est en UTF-8 sans BOM. Mon champ dans ma table est aussi en UTF-8 mais j'ai énormement de choix entre UTF-8_bin, UTF-8_unicode_ci, UTF-8_<insérer nom d'une langue>_ci etc. a noter que UTF-8_french_ci n'est pas dans la liste.

J'en ai essayé beaucoup, ça ne change rien.

Re: Problème encodage

Posté : 28 mai 2013, 23:20
par moogli
et la table ?
la base ?

Est ce que tu utilise des fonctions sur les chaines de caractères ? (la plus part ne gère l'utf-8)


@+

Re: Problème encodage

Posté : 29 mai 2013, 10:42
par Stalker
Voici le code que j'utilise:
$req_text="SELECT description FROM fiches WHERE name='".$name."'";
$res_text=mysql_query($req_text)
		  or die ("fuck ça ne marche pas");
while ($text=mysql_fetch_array($res_text))
	{
		extract($text);
		echo"<br>$description";
	}
et la table ?
la base ?
Je ne saisis pas la question.

Re: Problème encodage

Posté : 29 mai 2013, 14:12
par ghost5922
Bonjour,

essaie
$req_text="SELECT description FROM fiches WHERE name='".$name."'";
$res_text=mysql_query($req_text)
                  or die ("fuck ça ne marche pas");
while ($text=mysql_fetch_array($res_text))
        {
                extract(utf8_encode($text));
                echo"<br>utf8_encode($description)";
        }
ou
$req_text="SELECT description FROM fiches WHERE name='".$name."'";
$res_text=mysql_query($req_text)
                  or die ("fuck ça ne marche pas");
while ($text=mysql_fetch_array($res_text))
        {
                extract(utf8_decode($text));
                echo"<br>utf8_decode($description)";
        }

Re: Problème encodage

Posté : 29 mai 2013, 14:45
par moogli
Je ne saisis pas la question.
il existe plein de chose à voir dans ton cas :
  • encodage de la base
  • encodage de la table
  • encodage du champ
  • encodage du fichier
  • encodage de la connexion vers le serveurs (set names ...)
  • encoage indiqué dans l'entête http
  • encodage indiqué dans le header html

Est ce que tout est en dans le même charset (urtf-8 ou autre) ?

Pour mysql : utf8_general_ci ou utf8_bin doivent le faire normalement.

@ghost5922 : utf8_encode / utf8_decode sur des tableaux ? O_o
je t'invite à revoir la doc de ces fonctions :)

@+

Re: Problème encodage

Posté : 29 mai 2013, 15:22
par Stalker
  • encodage de la base: latin1 (character set database) utf-8 (character set results)
  • encodage de la table: latin1_swedish_ci
  • encodage du champ: utf-8_bin
  • encodage du fichier: utf-8 sans BOM
  • encodage de la connexion vers le serveurs (set names ...): je ne sais pas
  • encoage indiqué dans l'entête http: je ne trouve pas
  • encodage indiqué dans le header html: je ne trouve pas

Re: Problème encodage

Posté : 30 mai 2013, 08:22
par ghost5922
Bonjour,

@Moogli : il est dans une boucle je ne pense pas que ce sois un tableau mais une variable


while ($text=mysql_fetch_array($res_text))
{
extract(utf8_encode($text));
echo"<br>utf8_encode($description)";
}

il a bien un echo $description le second utilise une fonction

sinon si c'est un tableau $text en effet cela ne marchera pas je connais bien la fonction mais sur un array on fait pas un echo du coup utf8_encode/utf8_decode a utilise sur tes variables et non sur un array :p

Re: Problème encodage

Posté : 30 mai 2013, 16:21
par Stalker
$description renvoie directement ce qui est contenu dans le champs "description" de la table

Re: Problème encodage

Posté : 30 mai 2013, 17:49
par ghost5922
Re,

Ok donc teste
echo"<br>utf8_encode($description)";
ou
echo"<br>utf8_decode($description)";

Re: Problème encodage

Posté : 31 mai 2013, 16:43
par Stalker
Dans les deux cas:
Warning: mysql_connect() [function.mysql-connect]: Lost connection to MySQL server at 'reading initial communication packet', system error: 113 in ****************************************/requetes.php on line 2
Could not connect: Lost connection to MySQL server at 'reading initial communication packet', system error: 113
EDIT: ya un bug au niveau du serveur visiblement, tout plante, je reviens quand ça se calme.
EDIT 2: c'est bon ça s'est calmé. Votre méthode ne marche pas. Ca m'affiche ceci "utf8_encode(....)" dans le texte. Je me suis inspiré de la méthode par contre et maintenant ça marche. voici mon code pour ceux qui auront le même problème:
$req_text="SELECT description FROM fiches WHERE name='".$name."'";
$res_text=mysql_query($req_text)
		  or die ("fuck ça ne marche pas");
while ($text=mysql_fetch_array($res_text))
	{
		extract($text);
		$description=utf8_encode($description);
		echo"<br>$description";
	}