Carré à la place des accents [RESOLU] - PHP - Programmation
Marsh Posté le 02-12-2009 à 10:40:53
hello, même si tu met le content-type, ton fichier en natif peu etre dans un autre encodage, de plus php peu ecrire aussi dans un autre
ducoup verifie que ton fichier est en utf-8, tu peu aussi rajouter un header en php pour remettre le content-type,
ou faire un ini_set('default_charset', 'utf-8');
et prefere utf8_unicode_ci a l'utf8_general_ci
regarde aussi en quoi est ta connexion
Marsh Posté le 02-12-2009 à 13:14:45
Bonjour stealth35
Merci pour ta réponse. Ecoute je pense que le fichier natif est bon (les données brutes) puisque justement la page n'a pas de problème sur les accents sauf ce qui sort de la base de données.
Par contre ta dernière piste me semble bonne comment puis-je définir le format d'encodage de la connexion ?
Marsh Posté le 03-12-2009 à 08:39:57
Bonjour
apparament le probleme est plus complexe. La table est bien en utf-8 et quand je regarde le contenu avec phpMyAdmin ca s'affiche bien sans soucis. Mais sous ma page web c'est des carrées. D'après cette apge sur le web (http://electron-libre.fassnet.net/utf8.php) si j'ai des carrés c'est que c'est stocké en ISO et que ma page croit qu'il s'agit de l'utf-8.
Comment rectifier l'erreur ?
Marsh Posté le 03-12-2009 à 09:54:26
t'es vraiement sur que ta page a un encodage natif en utf8 , t'utilise quel editeur pour t'es page ? et quel extention pour faire t'es requete (mysql, mysqli, PDO ?)
tu pourrais biensur faire utf8_decode ou utf8_encode selon ton besion, mais ca serai mieux si on ne le faisait pas
Marsh Posté le 03-12-2009 à 14:35:33
Merci stealth35 pour tes réponses
Donc si tu veux voir ma page est ceci http://www.clubpdm.org/?/Annuaire/ (le tableau qui a des données issue d'une base de données)
J'utilise le CMS plumeCMS sur lequel j'ai créé un gabarit spécial.
pour editeur j'utilise notepadd++, pour l'extention je crois que c'est mysqli.
Pour ce qui est des fonctions utf8_encode cela ne marche pas il double les carrés.
Marsh Posté le 03-12-2009 à 15:06:59
si t'es sous mysqli, faudrai qu'apres ta connexion tu fais une requete type
$mysqli->query("SET NAMES UTF8" );
Marsh Posté le 03-12-2009 à 15:14:19
Je pense qu'il fait deja ce genre de choses :
function Connection($user, $pwd, $alias='', $dbname, $pfx='', $debug=false, $version='4.0')
{
$this->error = '';
$this->con_id = @mysql_connect($alias, $user, $pwd);
$this->debug = $debug;
$this->pfx = $pfx;
$this->debug('* MYSQL CONNECT');
if (!$this->con_id) {
$this->setError();
} else {
$this->database($dbname);
}
if (strlen($version) and version_compare($version, '4.1', '>=')) {
$this->execute('SET NAMES \'utf8\'');
}
}
Marsh Posté le 03-12-2009 à 18:09:19
J'ai trouvé!
Tu ne pouvais pas m'aider stealth35 car il fallait deviner
J'utilisais la fonction strToLower (fonction que j'utilise régulièrement) et le problème vient de cette fonction qui n'est pas compatible avec l'utf-8 ou du moins qui se fou du charset (normal c'est coté client ça) et qui prend le charset du serveur. Comme chez ovh c'est de l'ISO et bien je l'avais dans le baba.
L'utilisation de la methode mb_strtolower($chaine, 'utf-8') résoud tout
Marsh Posté le 02-12-2009 à 10:01:48
Bonjour à tous,
Je galère encore avec l'encodage de mon site internet. Toutes les données qui sortent d'une base de données sont mal encodées (en sortie sur la page).
Pourtant, ma page est en utf-8
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Et ma table est aussi en utf8_general_ci (Interclassement de la colonne, mais aussi interclassement de la table).
J'en arrive donc à ne pas savoir comment faire.
Bien sur quand je regarde avec phpMyAdmin les données, elles apparaissent bien proprement, je pense donc qu'elles sont donc enregistrées proprement dans la base de données.
Message édité par creusois le 03-12-2009 à 18:07:39