IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

[AJAX] Symbole euro et AJAX


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 29
    Par défaut [AJAX] Symbole euro et AJAX
    Bonjour amis développeurs

    Pour commencer, je m'excuse mais malgré l'intitulé connu sur ce forum (et bien d'autres), et après moultes et moultes recherches croyez-moi, je n'ai encore trouvé à cette heure aucune discussion concernant exactement le problème auquel je suis confronté...

    J'ai tout d'abord cru que mon soucis venait de l'encodage de mes bases de données, qui est en utf8_general_ci, mais il n'en est rien en fait

    Donc...
    Primo j'ai un formulaire utilisateur (le bête formulaire pour que le gars qui surfe sur mon site puisse poster un message sur le forum...), jusque là aucun problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <form action="javascript:enregistrerMessage('nouveau_message', 1);" name="nouveau_message">
    	<p class="entete_p">Corps du message</p>
    	<div id="champ_form"><textarea class="champ_texte" name="texte" cols="40" rows="15"></textarea></div>
     
    	<div class="entete_p">
    		<p><input name="bouton_preview" type="button" value="Prévisualiser" onclick="javascript:preview('nouveau_message', 'texte');" />
    		<input name="bouton_poster" type="submit" value="Poster" />
    		<input name="bouton_brouillon" type="button" value="Enregistrer le brouillon" disabled="disabled" /></p>
    	</div>
    </form>
    Je traite tout ça via la fonction Javascript "enregistrerMessage( )" pour appeler un script AJAX afin d'insérer le message dans ma base de données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    function enregistrerMessage(formulaire, id_sujet) {
    	var formu = document.forms[formulaire];
    	document.getElementById("erreurs").innerHTML = "";
    	document.getElementById("erreurs").style.display = "none";
    	formu.elements["texte"].style.border = "1px solid #99C500";
    	if (formu.elements["texte"].value != "") {
    		formu.elements["bouton_poster"].value = "Enregistrement en cours...";
    		formu.elements["bouton_poster"].disabled = true;
    		module_AJAX("./?page=nouveaumessage_ajax&s="+id_sujet, constructData(formulaire), resultatEnregistrementMessage);
    	} else {
    		$("#erreurs").slideDown("fast");
    		if (formu.elements["texte"].value == "") {
    			formu.elements["texte"].style.border = "1px solid #FF0000";
    			document.getElementById("erreurs").innerHTML += "Texte manquant<br />";
    		}
    	}
    }
    Jusque là encore, tout va bien, mes alert( ) au niveau Javascript me renvoient le bon texte saisi, accents, balises, symbole €, etc...

    Là ou ça a commencé à dérailler, c'est quand j'ai regardé le contenu de ma base de données la première fois... Le symbole € était remplacé par le fameux %u20AC (même plus besoin de chercher le code, je commence à le connaitre par coeur...) !
    Je suis donc remonté un peu dans la chaine d'enregistrement, et je me suis aperçu donc que sur le fichier PHP appelé par AJAX qui traite l'info, mon symbole € n'apparait pas comme il faut... Toujours ce fichu %u20AC !

    Donc afin de vous éclairer sur mon environnement, déjà, je travaille sur Firefox (toutes mises à jour faites), mais le soucis apparait également sur Chrome ou IE<last>...
    Ma page HTML débute par un DOCTYPE pour HTML5, et j'utilise la balise méta suivante (et j'y tiens) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15" />
    Mes scripts AJAX contiennent, côté PHP, la ligne de commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Content-Type: text/xml;');
    et côté "template", le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version="1.0" encoding="ISO-8859-15" ?>
    Pour ma recherche de solutions, j'ai tenté toutes les combinaisons d'encodage de mes pages, j'ai également tenté d'utiliser la fonction "urldecode( )" au niveau du script PHP qui récupère les données... sans plus de résultats...

    Côté Javascript sur le traitement AJAX, j'ai un "escape( )" pour mettre en forme les données à envoyer au script... Si je l'enlève c'est encore pire (normal)...

    Si vous avez une solution, une piste, un rien qui puisse m'aider, je vous en remercie d'avance !

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    J'ai tout d'abord cru que mon soucis venait de l'encodage de mes bases de données, mais il n'en est rien en fait
    Permet-moi d'en douter

    qui est en utf8_general_ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15" />
    au passage, en HTML5, <meta charset="ISO-8859-15" />, suffit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version="1.0" encoding="ISO-8859-15" ?>
    à moins que pour toi l'UTF-8 et l'ISO-8859-1 soient équivalents, il y a de fortes chances que ça vienne de là
    Tu peux toujours essayer d'utiliser utf8_decode() après récupération dans la base...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 29
    Par défaut
    Salut Bovino, merci pour ta réponse, je vais étudier ça

    Je viens de faire un nouveau test... Dans ma base de données toujours en utf8_general_ci, je rentre manuellement le symbole € dans le corps du message (et il est bien pris en compte dans l'affichage avec phpmyadmin).

    Accrochez-vous : à l'affichage sur le site il faut que je sois en ISO-8859-1, sinon le symbole € ne s'affiche pas (losange avec '?' en utf8 et carré bizarre en ISO-8859-15)...

    Or si je ne me trompe pas, le symbole € est censé être pris en compte A PARTIR de ISO-8859-15, pas par ISO-8859-1... Non ?

    Cela pourrait-il venir de mon DOCTYPE pour HTML5 ?

  4. #4
    Membre expérimenté Avatar de brachior
    Homme Profil pro
    Doctorant
    Inscrit en
    Mai 2011
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 190
    Par défaut
    AJAX utilise l'UTF8 (du au XML), pas l'ISO, donc il te faut convertir ...
    Le problème, c'est que la majorité des fonctions ne permettent que la conversion UTF8 <-> ISO-8859-1

    Vu que tu tiens énormément à rester en ISO (=/),
    Il faut faire un traitement particulier pour les caractères qui ne sont pas ISO-8859-1 ...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 29
    Par défaut
    Citation Envoyé par brachior Voir le message
    Vu que tu tiens énormément à rester en ISO (=/),
    Est-ce vraiment mal ?

    Si je préfère rester en ISO, c'est parce que ça me gonfle de devoir taper le code pour tous les accents dans les textes qui sont en dur dans mon template...

    Merci pour vos messages en tous cas

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    c'est parce que ça me gonfle de devoir taper le code pour tous les accents dans les textes qui sont en dur dans mon template...
    Ben raison de plus pour tout passer en UTF-8

    Passez à l'UTF-8 sans manquer une étape
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 29
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Ben raison de plus pour tout passer en UTF-8

    Passez à l'UTF-8 sans manquer une étape
    C'est là que je ne comprend pas en fait :s Je n'ai pas besoin de taper le code HTML de chaque accent en ISO...

    Sinon pour l'encodage de mon fichier, j'avoue que j'ai du mal à comprendre en quoi le fait d'enregistrer en UTF8 change quelque chose étant donné que je spécifie un charset à ma page HTML, et que mes fichiers de template (contenant donc mon code HTML + texte brut) sont chargés via PHP...

    Merci pour ton lien

  8. #8
    Membre expérimenté Avatar de brachior
    Homme Profil pro
    Doctorant
    Inscrit en
    Mai 2011
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 190
    Par défaut
    Le fichier php/html/... sont de simples fichiers ...
    Ils ont leur propre encodage ...
    Et n'ont aucun rapport avec une balise (ou autre) écrite dans ce fichier ...

    La balise va dire à html "tiens, mes données sont comme ça" ...
    Il faut donc que le fichier soit aussi dans cette encodage ...

    Passer en UTF8 te permet d'avoir la quasi totalité des caractères de ce monde
    (japon/russe/chine/...) (il existe jusqu'à UTF32 ... mais osef )
    Le seul soucis reste PHP qui n'est pas natif pour UTF8 ...
    Mais avec un peu d'huile de coude ça passe nickel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 28/07/2009, 13h06
  2. Code ASCII du symbole Euro
    Par FW-S dans le forum Delphi
    Réponses: 9
    Dernier message: 03/04/2007, 01h27
  3. [AJAX] Longeur url pour AJAX
    Par FremyCompany dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 02/03/2006, 14h38
  4. [AJAX] upload fichiers avec AJAX
    Par jibouze dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 08/12/2005, 21h04
  5. [AJAX] Effectuer plusieur appel ajax
    Par shwin dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 06/10/2005, 16h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo