Pb d'accents avec PHP et MySQL

Fermé
Ralph303 Messages postés 17 Date d'inscription samedi 30 mai 2009 Statut Membre Dernière intervention 14 avril 2010 - 12 août 2009 à 02:55
Ralph303 Messages postés 17 Date d'inscription samedi 30 mai 2009 Statut Membre Dernière intervention 14 avril 2010 - 13 août 2009 à 04:24
Bonjour,

Je développe mon site sous windows XP avec EasyPHP 2.0b1.
Mon serveur Netissime utilise utf8_general_ci comme interclassement (moi, j'appelle ça un charset...).

Le pb, c'est que les caractères accentués ne s'affichent pas bien dans les tables de ma base de donnée, que ce soit sur mon ordi ou sur le serveur.

Sur un autre forum, on m'a conseillé de placer le code suivant dans mes scripts PHP:

<?php
$db = mysql_connect('localhost', '', '');
mysql_select_db('', $db);
mysql_query('SET NAMES utf8');
?>

J'ai aussi placé le code suivant:

<meta http-equiv="Content-Type" content="text/html; charset=utf8">

J'ai donc bien précisé partout que le charset est utf8.
De plus, dans phpMyAdmin de mon hébergeur, il est impossible de changer de charset qui est utf8_general_ci.
Celà signifie donc bien qu'il faut utiliser utf8, ou alors mon hébergeur a commit une erreur...

Je ne vois pas d'où vient le problème. Merci de m'aider.

Ralph303

4 réponses

Ricky38 Messages postés 4349 Date d'inscription samedi 15 mars 2008 Statut Contributeur Dernière intervention 2 novembre 2013 1 459
12 août 2009 à 03:01
0
Bonjour

J'ai donc bien précisé partout que le charset est utf8
Tu as oublié de parler de ton éditeur. Rédiges-tu bien tes pages en UTF8 aussi ?
utf8_general_ci comme interclassement (moi, j'appelle ça un charset..) Tu ne devrais pas, ce n'est pas la même chose. Le charset ne définit que le jeu de caractètres, alors que l'interclassement définit les règles de comparaison (ordre alphabétique et égalité). La quasi-totalité des interclassements fournis avec mysql sont de type case insensitive (d'où le _ci à la fin) et ne tiennent donc pas compte des majuscules / minuscules lors des comparaison ou des ORDER BY alors que sur la base du simple jeu de caractères, il n'y a aucun rapport entre un mot écrit en majuscules et le même en minuscules.
0
Ralph303 Messages postés 17 Date d'inscription samedi 30 mai 2009 Statut Membre Dernière intervention 14 avril 2010 8
12 août 2009 à 17:40
Merci pour vos réponses.

J'ai compris que j'avais bien fait de tout mettre en utf8...
Et dans l'autre post, j'ai trouvé un lien intéressant qui pointe sur un tuto qui explique comment résoudre le pb !

http://www.aquatz.com/Encodage-convertir-un-site-en-UTF8-PHP-MySQL_a36.html

Voilà, y'a plus qu'à...

Ralph303
0
Ralph303 Messages postés 17 Date d'inscription samedi 30 mai 2009 Statut Membre Dernière intervention 14 avril 2010 8
13 août 2009 à 04:24
Ca marche !!!

En fait, j'ai utilisé un éditeur freeware, DevPHP, qui permet de saisir en utf-8 en choisissant le format des
caractères...

De plus, il faut mettre du utf-8 partout dans les scripts et dans la base de donnée !

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
et
// On définit le charset
mysql_query('SET NAMES utf8') or die('Erreur de set '.mysql_error());

Ralph303
0