Charset, mysql, php et facebook

Charset, mysql, php et facebook - PHP - Programmation

Marsh Posté le 17-02-2011 à 16:44:12    

Bonjour à tous,
 
j'ai un soucis de charset. J'avoue que jusqu'à présent j'ai toujours bidouillé pour que ca marche, sans jamais comprendre le pourquoi du comment ca marchait.
 
J'ai une base de donnée mysql qui se remplit à partir d'un post php. Les données contiennent bien sûr des caractères spéciaux (nos chers accents français :-) ). Des pages php font ensuite un query depuis la base de donnée pour afficher les données.
 
Jusque là, pas de problème: mes accents ne se perdent pas en route.  
Or maintenant je suis en train de développer une application facebook qui doit me ressortir les données de ma bdd. Et là le soucis: les caractères ne passent pas. FBML ne prend certainement pas de metatag en compte.
 
Je cherche donc une combinaison gagnante pour que base de donnée, posting et querying fonctionnent bien, et sur hébergement normal, et sur plateforme FBML.
 
Voilà ce que j'utilise jusque là (je pense que certains vont rire ^_^):  
 
MySQL charset: UTF-8 Unicode (utf8)
MySQL connection collation: utf8_general_ci
MySQL fields collation: latin1_swedish_ci
Posting PHP page: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>   +    mysql_query("SET NAMES utf8" );
Querying PHP page: <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
 
Merci à tous pour votre aide... :-)


Message édité par chris_avig le 17-02-2011 à 16:44:55
Reply

Marsh Posté le 17-02-2011 à 16:44:12   

Reply

Marsh Posté le 17-02-2011 à 17:24:22    

pourquoi dans ton php tu utilises pas utf8_encode() ou utf8_decode() ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 18-02-2011 à 04:29:32    

Super, merci, ca marche :-)
Bon, il faut utiliser utf8_encode() sur facebook, et je ne comprends pas pourquoi c'est encode et pas decode. Je crois que je resterai confuse et bidouillerai encore pendant quelques temps :-D

Reply

Marsh Posté le 18-02-2011 à 10:00:06    

ca veut dire que tes données sont en iso-8859-1 dans la bd ou alors dans le fichier xml (si FBML est du xml, je ne connais pas)... Pour rappel, certains parsers xml ne gèrent pas forcément l'utf-8 (cela dit, en 2011, ils deviennent rares).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 18-02-2011 à 13:08:52    

Mais si dans phpadmin je lis :
MySQL charset: UTF-8 Unicode (utf8)  
MySQL connection collation: utf8_general_ci  
 
cela veut dire que la bd est en utf, non?
pourtant dans la page php, c'est "encode" qui me permet de lire correctement.

Reply

Marsh Posté le 18-02-2011 à 14:18:49    

non, pas nécessairement : http://dev.mysql.com/doc/refman/5. [...] ction.html
T'as des charset à différents niveaux, rien que dans mysql :
- variables de conf globales : charset pour la collation, connexion, pour les résultats, charset par défaut...
- variables de conf du serveur mysql (mysqld) : idem
- variables de conf du client mysql : idem
- variables de conf des clients (appli web, par ex) : idem
- charset de la BD
- charset d'une table
- charset d'un champ texte d'une table
 
Après, en dehors de mysql, t'as le charset d'apache, du système de fichier, du parser XML (si t'en utilises un) et du charset de la page web. Donc tu vois, y'en a des sources d'erreur... J'en sais qq chose, j'en ai justement un de pb de charset : la connexion entre mysql et l'appli web se fait en utf-8 au lieu d'iso-8859-1 (latin1) et j'ai beau modifier les variables de conf de mysql (my.cnf ou my.ini suivant l'OS), je m'en sors pas, je dois envoyer juste après ma création de connexion la requête "SET CHARACTER SET latin1" et là ça le fait...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed