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

  FORUM HardWare.fr
  Programmation
  PHP

  ISO-8859-15, utf-8 et mysql [Résolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

ISO-8859-15, utf-8 et mysql [Résolu]

n°2084688
genhcn
Posté le 24-06-2011 à 16:17:53  profilanswer
 

Bonjour,
 
Je vais essayer de donner une courte explication malgré la complexité du problème, enfin, pour moi.
 
J'ai un problème insoluble sur lequel je planche depuis plusieurs jours, surtout que je ne suis pas Pro en programmation.
J'utilise un script pour gérer une base de données généalogiques (http://lythgoes.net/genealogy/software.php). Ce script est assez simple à personnaliser, habituellement.
 
On a voulu (qui dit on s'exclue, évidemment), incorporer ce module aux médias de la base de données :
Simple AJAX Commenting System (http://tutorialzine.com/2010/06/simple-ajax-commenting-system/)
 
Pour mes amis anglophone, tout passe comme une lettre à la poste (http://www.tngforum.us/index.php?showtopic=6908&st=0). Mais pour moi, niet! Le fameux problème des accents de la langue française.
 
Donc, pour faire un résumé, les tables de ma base mysql sont en utf8_general_ci, le charset déclaré dans mon entête en ISO-8859-15. Et je ne peux pas le changer en utf-8, le bordel pogne soit dans mes entrées, soit dans l'interface de ma page, cette configuration est la seule qui fonctionne, un mystère apparement.
 
Donc, le script en question, si je laisse les lignes d'origine :
 

Code :
  1. private static function validate_text($str){
  2.  /*
  3.  / This method is used internally as a FILTER_CALLBACK
  4.  */
  5.  if(mb_strlen($str,'utf8')<1)
  6.   return false;
  7.  // Encode all html special characters (<, >, ", & .. etc) and convert
  8.  // the new line characters to <br> tags:
  9.  $str = nl2br(htmlspecialchars($str));
  10.  // Remove the new line characters that are left
  11.  $str = str_replace(array(chr(10),chr(13)),'',$str);
  12.  return $str;
  13. }


 
Les é et autres accents se transforment dans la base mysql et lors de l'affichage, évidemment, un é ressemble à mé
 
J'ai donc fouillé afin de trouver une manière de faire fonctionner le tout.
 
Si je remplace:

Code :
  1. $str = nl2br(htmlspecialchars($str));


 
par :
 

Code :
  1. $str = htmlentities($str, ENT_QUOTES,'UTF-8');


 
OH! Miracle! ça fonctionne #1 sur la page mais.... pas au niveau de mysql qui lui, m'inscrit naturellement l'équivalent en html :
mémé devient m&eacute;m&eacute;
 
Je cherche donc à avoir les accents aussi dans mysql afin d'avoir un code propre et une base facile à travailler. J'ai de la difficulté à croire que c'est impossible. A date, ce que je vois se résume à bien des ajouts (tous les caractères accentués). J'suis parvenue à faire entrer les caractères accentués avec ces lignes :
 

Code :
  1. $str = htmlentities($str, ENT_QUOTES,'UTF-8');
  2. $str = html_entity_decode($str);


 
Sauf que la fonction ajax ne s'actualisait plus automatiquement...
 
Je crois être vraiment proche de la solution mais mes compétences s'arrêtent là, malheureusement.
 
Des idées?
Vous remercie d'avance car là, suis désespéré!


Message édité par genhcn le 24-06-2011 à 19:28:23
mood
Publicité
Posté le 24-06-2011 à 16:17:53  profilanswer
 

n°2084724
caribouuu
Posté le 24-06-2011 à 16:52:14  profilanswer
 

Code :
  1. $str = htmlentities($str, ENT_QUOTES,'UTF-8');
  2. $str = html_entity_decode($str);
 

Là ça revient à rien faire il me semble ce que tu fais. Tu fais un htmlentities et tu reviens au point de départ avec html_entity_decode...

 

J'ai un peu de mal a suivre a quel moment tu en es quand tu fais ça, avant l'insertion en base de donnée?

 

edit: en fait c'est pas gênant que les accents s'affichent pas dans mysql, du moment que tu les a sur la page, ton premier htmlentities suffit, non?


Message édité par caribouuu le 24-06-2011 à 17:01:29

---------------
Bla (blaa bbla)
n°2084741
neriki
oenologue
Posté le 24-06-2011 à 17:05:28  profilanswer
 

Sinon, tu peux aussi essayer utf8_decode et utf8_encode... :o


---------------
C'est pas bon, Neriki, tu recommences à glander, là. :o
n°2084754
genhcn
Posté le 24-06-2011 à 17:18:42  profilanswer
 

@caribouuu
Je sais bien que je suis difficile à suivre, j'ai bien spécifié que je n'étais pas pro en programmation
 :wahoo:  
J'essaye à tout hasard en notant les résultats de mes essais finalement.
C'est ce que je vous ai partagé : des tests.
 
Selon ce que je comprend de mon code, je suis exactement dans les lignes avant l'entrée dans la base mysql
 
 
@neriki
utf8_decode et utf8_encode
Je voudrais bien mais je ne trouve pas comment le faire!
C'est là que je suis jammé finalement!

n°2084756
caribouuu
Posté le 24-06-2011 à 17:19:56  profilanswer
 

et faudra pas oublier de remettre le nl2br, sinon yaura pas les retours à la ligne dans les commentaires


---------------
Bla (blaa bbla)
n°2084763
genhcn
Posté le 24-06-2011 à 17:30:24  profilanswer
 

Parlons en justement de nl2br, où dois-je le remettre?

n°2084789
genhcn
Posté le 24-06-2011 à 19:09:28  profilanswer
 

J'ai trouvé une façon de contourner le tout.
J'avais essayé cette solution hier soir mais je devais être fatigué et l'avoir mis au mauvais endroit.
À l'ouverture de la première requête à mysql :
 
mysql_query("SET NAMES 'utf8'" );
 
Tout passe au niveau de l'affichage comme dans MySql....
Bingo!
Merci


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

  ISO-8859-15, utf-8 et mysql [Résolu]

 

Sujets relatifs
Random et limit sur un inner join MySQLphp / mysql pages blanche
[PHP/MYSQL] Insérer/modifier des donnéesAfficher résultats base mysql -> tableau html horizontal
Faire un export csv depuis mysql en utilisant cronerreur de requete mysql -mysql_fetch_array(): supplied argument is not
Requête d'export de données Mysql vers fichier CSVDELPHI/MYSQL impression
recuperer contenu du log mysql-bin.xxxxUtiliser IF pour affiner un ORDER BY en MySQL
Plus de sujets relatifs à : ISO-8859-15, utf-8 et mysql [Résolu]


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