Erreur java d'accents et d'espaces

amateurjava Messages postés 88 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 12 octobre 2009 - 28 déc. 2007 à 20:10
amateurjava Messages postés 88 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 12 octobre 2009 - 30 déc. 2007 à 15:50
Bonjour,

j'ai un leger probleme de codage :

J'ai d'un coté une BD mysql et de l'autre un page PHP qui liste des enregistrements de la base.

J'ai crée un script pour faire apparaitre une infobulle lorsque la souris passe sur un élément de la liste .

Le probleme, c'est que le débogage de IE me montre que ce script est ok lorsqu'un enregistrement ne comporte pas d'accent ou d'apostrophe.

Par contre dans le cas contraire il me renvoi des erreur ( ')' attendu)
je précise que le script d'info bulle affiche un texte qui est un concaténation de champs de la base.
ex $contenu=$nom.$prenom.$memo;
et je renvoi $contenu à mon script java.

1ere question : comment debuguer
2eme question : sachant que le champ $memo est de type 'longtext' dans ma base, il y a des retours de chariot qui me générent des erreurs (constante chaine non terminée)
comment débuguer

Dans l'attente,

Faites vous plaisir !!

23 réponses

amateurjava Messages postés 88 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 12 octobre 2009
30 déc. 2007 à 15:36
c'est la même histoire...

j'avais deja essayé.

Si dans ma page php, je met en initial d'encoder en utf8, lors de l'initialisation de la page, mes caractères seront en erreur.

Par contre, une fois ma requete ajax envoyée, ça fonctionnera.

Donc la solution serait d'initialiser en iso, et de demander à ajax de retourner la page en iso (decodage de l'utf8).

Normalement, d'aprés les tutos, lorsqu'on envoi la requete a ajax, ce qui est retourné peut etre recodifié avec    
xhr_object.setRequestHeader('Content-type', 'application/x-www-form-urlencoded; charset=ISO-8859-1');

Le pb, c'est que ça ne recodifie pas chez moi... ça n'a jamais marché
Qu'est ce que j'oublie?

Faites vous plaisir !!
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
30 déc. 2007 à 15:45
Non, c'est bien un utf8_decode() qu'il faut lors de l'ouput ajax.
Je fais ça depuis des années sans recontrer autant de problème. Tu ne fais pas les choses bien, ce n'est pas possible.
Fais voir ton script php appelé par Ajax.
0
amateurjava Messages postés 88 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 12 octobre 2009
30 déc. 2007 à 15:50
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link href="css/liste_note.css" rel="stylesheet" type="text/css">
<link href="css/infobulle.css" rel="stylesheet" type="text/css">
<link href="css/note.css" rel="stylesheet" type="text/css">
</head>

<? $today=date('Y-m-d');
include ("connection.php");
$retard=mysql_query("SELECT *,DATE_FORMAT(note_date,'%d-%m')as note_date FROM note WHERE note_date < '$today'");
while ($ret=mysql_fetch_array($retard)) {?>

<? echo $ret["note_date"];?>

<? $note_sujet=$ret["note_sujet"];
$note_contenu=$ret["note_contenu"];
$note_date=$ret["note_date"];
$note_heure=$ret["note_heure"];?>

<? echo utf8_decode(substr($ret["note_sujet"],0,21));?><? echo utf8_decode($note_sujet);?>
<? echo utf8_decode($note_contenu);?>
<? echo $note_date." | ".$note_heure;?>

<? }?>

<? $jour=mysql_query("SELECT *,DATE_FORMAT(note_date,'%d-%m-%Y')as note_date FROM note WHERE note_date ='$today' ORDER BY note_heure ASC");
while ($jr=mysql_fetch_array($jour)) {?>

<? echo substr($jr["note_heure"],0,5);?>

<? $note_sujet=$jr["note_sujet"];
$note_contenu=$jr["note_contenu"];
$note_date=$jr["note_date"];
$note_heure=$jr["note_heure"];?>

<? echo utf8_decode(substr($note_sujet,0,21));?><? echo utf8_decode($note_sujet);?>
<? echo utf8_decode($note_contenu);?>
<? echo $note_date." | ".$note_heure;?>

<? }?>

et

le script ajax :

function maj(div,requete){   

var xhr_object = null;
 if(window.XMLHttpRequest) // Firefox
          xhr_object = new XMLHttpRequest();
       else if(window.ActiveXObject) // Internet Explorer
          xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
       else { // XMLHttpRequest non supporté par le navigateur
          alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
          return;
       }
    xhr_object.open("POST", requete, true);  
    xhr_object.onreadystatechange = function() {
          if(xhr_object.readyState == 4) {
             
             window.opener.document.getElementById(div).innerHTML = xhr_object.responseText;   
             }
             
       }
       xhr_object.setRequestHeader('Content-type', 'text/html;charset=ISO-8859-1');     
       xhr_object.send(null);
}

la fonction est appelée par une popup où on saisi les notes

Faites vous plaisir !!
0
Rejoignez-nous