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 :
- private static function validate_text($str){
- /*
- / This method is used internally as a FILTER_CALLBACK
- */
- if(mb_strlen($str,'utf8')<1)
- return false;
- // Encode all html special characters (<, >, ", & .. etc) and convert
- // the new line characters to <br> tags:
- $str = nl2br(htmlspecialchars($str));
- // Remove the new line characters that are left
- $str = str_replace(array(chr(10),chr(13)),'',$str);
- return $str;
- }
|
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 :
- $str = nl2br(htmlspecialchars($str));
|
par :
Code :
- $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émé
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 :
- $str = htmlentities($str, ENT_QUOTES,'UTF-8');
- $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