Page 1 sur 1

problèmes d'encodage

Posté : 07 févr. 2011, 16:10
par kristen
Bonjour,

Je souhaite afficher au-dessous d'un champ de saisie d'un formulaire une liste de mots possibles commençant par les lettres déjà tapées.
Pour cela un peu d'ajax et côté données, la création d'une table ne contenant que cette liste.
Il faut absolument que le 'ñ' soit entre le 'n' et le 'o', comme en espagnol. Je comptais donc m'en tirer comme ça :
CREATE TABLE maliste CHARACTER SET utf8 COLLATE utf8_spanish2_ci SELECT DISTINCT mot FROM source ORDER BY mot ASC
Deux problèmes :

1 - la table 'maliste' se crée bien, mais le 'ñ' vient après le 'z', et même après un ORDER supplémentaire dans PhpMyAdmin.
2 - les mots sont bien renvoyés mais là les 'ñ' ont carrément disparus.

Voici le code PHP
<?php
header('Content-Type: text/xml ; charset = utf-8');

include ('connect.inc.php');

$dom = new DOMDocument();
$reponse = $dom->createElement('reponse');
$dom->appendChild($reponse);

$name = $_GET['name'];
$kinnigou = mysql_query("SELECT mot FROM maliste WHERE mot LIKE '".$name."%"."' LIMIT 20");
while ($ligne = mysql_fetch_array($suggestions))
{
$suggestion = $dom->createElement('suggestion');
$suggText = $dom->createTextNode("$ligne[mot]");
$suggestion->appendChild($suggText);
$reponse->appendChild($suggestion);
}

$xmlString = $dom->saveXML();
echo $xmlString;

mysql_close();
Si quelqu'un a des idées, merci d'avance !

Re: problèmes d'encodage

Posté : 07 févr. 2011, 16:53
par jojolapine
Bonjour,

Pour le premier problème, je ne sais pas trop, mais as-tu essayé de remplacer tout caractères accentués par sont équivalent non-accentué?
En gros si l'utilisateur entre:
nin
Tu pourras lui proposer
niño
...
Tu pourrais donc construire ta table en ce sens, et fair un petit traitement php en amont avant tes requêtes... non?

Ensuite pour la disparition du caractère au retour de l'ajax...
Plusieurs possibilités : Déjà est-ce que tout tes scripts sont en utf8? (script appelant, script JS, script serveur)
Ensuite comment réceptionnes-tu les données provenant de l'ajax? Comment les utilises-tu?

Re: problèmes d'encodage

Posté : 07 févr. 2011, 17:29
par kristen
Je ne vois pas bien ce que tu proposes en premier...

Pour le reste, voilà la partie du javascript concernée :

Code : Tout sélectionner

function handleServerResponse() { var xmlResponse = xmlHttp.responseXML; xmlRoot = xmlResponse.documentElement; kinnigArray = xmlRoot.getElementsByTagName("suggestion"); var html = ""; for (var i=0; i<kinnigArray.length; i++) {html += kinnigArray.item(i).firstChild.data + "<br/>";} var xmlResponse = xmlHttp.responseText; var myDiv = document.getElementById("mydiv"); myDiv.innerHTML = html; }
Pas d'hispanisant dans l'avion ?