Bonjour,
Je suis sur la réalisation d'un système pour remplir facilement une base de donnée (qui fonctionne très bien) et qui utilise en parallèle pour simplifier la tâche Jquery Autocomplete
Tout le site est encodé en UTF8, aussi bien l'entête HTML, la base de donnée et les requêtes PDO sont en UTF8
Mais quand j'utilise l'autocomplete de JQuery, là je me retrouve avec une incompréhension des accents, la clause WHERE différencie les "e" et "é" et le json_encode me renvoi des choses comme "é"
Je ne vois pas d'ou cela peut provenir, je m'arrache les cheveux...
Dans la base de donnée, il m'affiche effectivement les caractères de la même façon.
Voici le script de requête en cause:
//header('Content-Type: text/html; charset=UTF-8');
require_once("secure/cnxMySQL.php");
if (isset($_GET['term'])){
$return_arr = array();
$sql = $cnx->prepare("SELECT id, firstname, lastname FROM workers
WHERE CONCAT(firstname,lastname) LIKE :term ");
$sql->execute(array('term' => '%'.$_GET['term'].'%'));
while($d = $sql->fetch(PDO::FETCH_ASSOC)){
$return_arr[] = array(
'label' => $d['firstname']." ".$d['lastname'],
'value' => $d['id']);
}
echo json_encode($return_arr,true);
}
J'ai tenté de forcé l'entête de ma page de requête MySQL en UTF8 mais rien n'y fait. J'ai également testé une solution que j'ai pu trouver sur internet mais qui résoud partiellement mon problème:
echo html_entity_decode(json_encode($return_arr),ENT_COMPAT,'UTF-8');
Le résultat est que j'ai bien le renvoie avec les caractères accentué, mais au niveau de la recherche, les caractères accentué sont ignoré.