Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1542 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [RESOLU] Carré à la place des accents

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] Carré à la place des accents

n°1946507
creusois
Posté le 02-12-2009 à 10:01:48  profilanswer
 

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
mood
Publicité
Posté le 02-12-2009 à 10:01:48  profilanswer
 

n°1946530
stealth35
Posté le 02-12-2009 à 10:40:53  profilanswer
 

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


Message édité par stealth35 le 02-12-2009 à 10:41:38
n°1946590
creusois
Posté le 02-12-2009 à 13:14:45  profilanswer
 

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 ?

n°1946786
creusois
Posté le 03-12-2009 à 08:39:57  profilanswer
 

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 ?

n°1946801
stealth35
Posté le 03-12-2009 à 09:54:26  profilanswer
 

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

n°1946931
creusois
Posté le 03-12-2009 à 14:35:33  profilanswer
 

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.
 

n°1946961
stealth35
Posté le 03-12-2009 à 15:06:59  profilanswer
 

si t'es sous mysqli, faudrai qu'apres ta connexion tu fais une requete type
 
$mysqli->query("SET NAMES UTF8" );

n°1946967
creusois
Posté le 03-12-2009 à 15:14:19  profilanswer
 

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\'');
        }
    }

n°1947099
creusois
Posté le 03-12-2009 à 18:09:19  profilanswer
 

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

n°1947105
stealth35
Posté le 03-12-2009 à 18:18:17  profilanswer
 

en effet..., c'est bon a savoir d'ailleur


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [RESOLU] Carré à la place des accents

 

Sujets relatifs
problème firefox/CSS [RESOLU][Résolu] remplacer un mot réccurant
[Résolu] Exécution de plusieurs SQL dans un .bat(resolu) Problème de positionnement d'un bouton CSS
ajouter +33 a un numero de telephone a la place du 0[Résolu] String2charArray et charArray2String
PB fonction javascript [RESOLU][Resolu] Passage d'argument a un thread
[CSS] Question de mise en page/structure générale (résolu) 
Plus de sujets relatifs à : [RESOLU] Carré à la place des accents


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR