Mr Z
Messages postés7Date d'inscriptionmercredi 14 juillet 2004StatutMembreDernière intervention15 octobre 2009
-
15 oct. 2009 à 11:07
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 2015
-
16 oct. 2009 à 13:14
Bonjour,
j'ai un soucis d'affichage/encodage d'une chaîne en HTML.
Sur ma base MySql est enregistré une chaîne encodée utf8_general_ci.
Je récupère cette chaîne via PHP, dans une boucle while, et l'insère dans un tableau Javascript :
<script language="javascript" type="text/javascript">
var commentTabJS = new Array();
<?php //la fonction/requête de récupération
$contenu = aLaUne();
//la boucle
while (list($id, $donnees) = each($contenu)){
//données brut (ex:réalisé par machin.
Carte...)
$str = $donnees['commentaires'];
//je décode les é, etc.
$str = html_entity_decode($str, ENT_QUOTES, 'UTF-8');
//je vire les retours chariot
$str = str_replace(CHR(13).CHR(10),"",$str);
//j'encode ma chaîne "cleanée" pour l'insérer dans un tableau Javascript
$str = htmlentities($str, ENT_QUOTES, 'UTF-8');
echo 'commentTabJS.push("'.$str.'");';
} ?>
</script>
Ensuite, j'utilise jQuery pour afficher cette chaîne dans une DIV (class="informations") :
<script language="javascript" type="text/javascript">
function loadContenu(i){
var iOK = i.substr(4);
//je récupère le bon texte en fonction de l'ID du bouton sélectionné
var texte = commentTabJS[iOK];
//Et là c'est la m... la chaîne est bien en HTML mais s'affiche tel quel...
//Les balises s'affichent comme du texte...
//J'ai fait un essai avec une fonction trouvée ici : http://phpjs.org/functions/html_entity_decode:424 //mais ne fonctionne pas...
//texteOK = html_entity_decode(texte, ENT_QUOTES, 'UTF-8');
$(".informations").html(''+texte+'
');
}
</script>
Voilà, je suis bien bloqué.
Je suis pas très à l'aise avec jQuery. J'ai de bonnes bases en Javascript, mais bon.
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 15 oct. 2009 à 11:14
Bonjour,
>>Je suis pas très à l'aise avec jQuery.
oulah... moi non plus
pour le reste faut être "cohérent" partout,
_ sauver ses sources en utf-8 ( sans bom )
_ mettre la balise <meta http-equiv="content-type"
content="text/html; charset=UTF-8" /> en html
_ mettre header('Content-Type: text/html; charset=utf-8');
coté php
_ il faut aussi vérifier si le utf8_general_ci
de la base c'est la même chose que "utf-8"
Mr Z
Messages postés7Date d'inscriptionmercredi 14 juillet 2004StatutMembreDernière intervention15 octobre 2009 15 oct. 2009 à 11:28
Bonjour Bul3,
>> sauver ses sources en utf-8 ( sans bom )
le fichier est bien en utf-8. Qu'est ce que tu entend par "bom" ?
>> mettre la balise <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> en html
bien présente.
>> mettre header('Content-Type: text/html; charset=utf-8');
bien là aussi.
>> il faut aussi vérifier si le utf8_general_ci de la base c'est la même chose que "utf-8"
C'est plus flou. Mais je préfère partir des données brutes que je récupère.
Si je vais dans phpMyAdmin, le champ "commentaires" affiche : (...)réalisé par machin.
Carte(...)
>> et les decode doivent être inutiles
Les encode/decode sont là pour que je puisse insérer ma chaîne dans le tableau Javascript,
car sinon les caractères et autres retours chariot font plantés l'insertion...
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 15 oct. 2009 à 11:42
>>Qu'est ce que tu entend par "bom" ?
oh, par là j'entends pas grand chose
c'est un codage un peu particulier de utf-8
qui ne convient pas pour ici
>>utf8_general_ci de la base
il y a plusieurs choix au niveau utf8 dans une base
"utf8_general_ci" correspond-il à l' "utf_8 php et html" ?
>>encode/decode
pas regardé de près, mais comme j'ai vu
des 'utf8' : html_entity_decode($str, ENT_QUOTES, 'UTF-8');
à ce que vous nous dites, tout semble ok, sauf donc
à vérifier utf8_general_ci, les html_entity_decode...
pas de raisons que ça ne fonctionne pas,
et jquery n'a probablement rien à y voir (quoique ?).
Mr Z
Messages postés7Date d'inscriptionmercredi 14 juillet 2004StatutMembreDernière intervention15 octobre 2009 15 oct. 2009 à 11:59
J'ai fait des tests avec d'autre encodage sur le champ et cela produit les même résultats.
Ce que je me dis c'est que, comme la chaîne s'affichant dans ma DIV est :
Anagramme réalisé par Jean-Claude Mattrat.
Carte de correspondance de JBA.
Voir aussi Édition JBA.
Je me dis qu'une simple fonction html_entity_decode pourrait m'aider.
C'est pour cela que j'ai cherché un équivalent Javascript de la fonction php.
Or la fonction que j'ai trouvé semble générer une erreur...
La fonction en question :
function html_entity_decode(string, quote_style) {
var hash_map {}, symbol '', tmp_str = '', entity = '';
tmp_str = string.toString();
if (false (hash_map this.get_html_translation_table('HTML_ENTITIES', quote_style))) {
return false;
}
for (symbol in hash_map) {
entity = hash_map[symbol];
tmp_str = tmp_str.split(entity).join(symbol);
}
tmp_str = tmp_str.split(''').join("'");
return tmp_str;
}
Elle ne semble pas avoir d'erreur ? non ?
Z
Vous n’avez pas trouvé la réponse que vous recherchez ?
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 16 oct. 2009 à 13:14
ah.. j'ai raté les messages ?
au fond, ça n'a plus aucun rapport
avec l'utf-8.. si j'ai suivi (?)
un souci d'interprétation des balises ?
comme c'est avec jquery :