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

Petit nouveau ! | 3 Messages

07 juil. 2010, 13:22

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

ViPHP
ViPHP | 5462 Messages

07 juil. 2010, 13:55

c'est a cause de ton htmlentities, c'est pas a faire au moment de l'insertion dans la base

Petit nouveau ! | 3 Messages

07 juil. 2010, 15:00

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;

ViPHP
ViPHP | 5462 Messages

07 juil. 2010, 15:42

pourquoi ton charset est "CHARSET=latin1" et pas "CHARSET=utf8" ?

regarde ton default-character-set aussi

Petit nouveau ! | 3 Messages

07 juil. 2010, 16:21

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©

ViPHP
ViPHP | 5462 Messages

07 juil. 2010, 16:26

je t'invite a allé voir le tuto sur l'encodage : faq-tutoriels/encodage-utf-t245062.html :wink: