Page 1 sur 1

Problème données/UTF-8 dans BDD

Posté : 07 juil. 2010, 13:22
par Senkou
Bonjour tout le monde,

voilà ma question va peut être paraître bête pour certains d'entre vous mais je suis confronté à quelque chose d'étrange !
Je suis sur un serveur OVH de type mediaplan dans lequel j'ai fait une page tout bête comme la suivante :

<?php

Function traitement($chaine){
	$string= strtr($chaine,
		"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ",
		"aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn");

	$loc = "UTF-8";
	putenv("LANG=$loc");
	$loc = setlocale(LC_ALL, $loc);
	$string = htmlentities(strtoupper($string));

	return $string;
};

if (isset($_POST['nom'])){
	if ($_POST['nom'] != NULL){
		echo traitement($_POST['nom']);
	}
} else {
	echo traitement('Test<br>');
}
?>
<form action="test1.php" method="post">
	Nom : <input type="text" maxlength="255" name="nom" />
	<input type="submit" value="Participez !" />
</form>
Le but étant de faire en sorte que l'osque que j'écris : Héllo World cela me retourne HELLO WORLD.
Donc on retire les accents remplace par la lettre sans accent et on met tout en majuscule.

Si vous testez ce bout de code cela fonctionne à merveille cependant lorsque j'envoie ses données sur ma base SQL de type :
CREATE TABLE IF NOT EXISTS `form` (
  `id` tinyint(11) NOT NULL auto_increment,
  `nom` varchar(250) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
dans les entrées je retrouve ça : HA&copy;LLO WORLD

Quelqu'un à une idée d'où cela peux provenir ?
Merci pour votre aide !

Senkou

Re: Problème données/UTF-8 dans BDD

Posté : 07 juil. 2010, 13:55
par stealth35
c'est a cause de ton htmlentities, c'est pas a faire au moment de l'insertion dans la base

Re: Problème données/UTF-8 dans BDD

Posté : 07 juil. 2010, 15:00
par Senkou
J'y ai bien pensé mais ça ne change absolument rien de plus que j'agis sur une chaîne qui a été nettoyé de ses accents donc il y a aucune raisons qu'il transforme en A&copy; ou en &Eacute; (J'ai quand même essayé en retirant htmlentities ça ne change rien)

EDIT : en fait si il ya un changement le voici : A© au lieu de A&copy;
J'ai aussi testé un
mysql_query("SET NAMES UTF8");
avant l'envoi de mes données mais toujours le même problème cette fois-ci il affiche A? au lieu de A&copy;

Re: Problème données/UTF-8 dans BDD

Posté : 07 juil. 2010, 15:42
par stealth35
pourquoi ton charset est "CHARSET=latin1" et pas "CHARSET=utf8" ?

regarde ton default-character-set aussi

Re: Problème données/UTF-8 dans BDD

Posté : 07 juil. 2010, 16:21
par Senkou
Je ne sais pas j'ai laissé par défaut cependant voici la modif :
CREATE TABLE form (
  id tinyint(11) NOT NULL auto_increment,
  nom varchar(250) NOT NULL,
  PRIMARY KEY  (id)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
et dans ma table ça ne change rien =/

il affiche A©

Re: Problème données/UTF-8 dans BDD

Posté : 07 juil. 2010, 16:26
par stealth35
je t'invite a allé voir le tuto sur l'encodage : faq-tutoriels/encodage-utf-t245062.html :wink: