Comment gérer les accents appli WYSIWYG [Résolu]

Signaler
Messages postés
273
Date d'inscription
samedi 5 juillet 2003
Statut
Membre
Dernière intervention
31 mars 2015
-
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
-
Bonjour,
Je voudrais savoir comment peut on gérer les accents du style é, è, à, ê, etc... dans une application WYSIWYG de façon à générer le bon code HTML associé à ces caractères?

Merci.

Jarod_Delaware

18 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
>>quand j'affiche la page sur le serveur, les accents sont là.

    je suppose que tu veux dire quand je vérifie coté serveur
    car l'afficher ? dur dur.

>>C'est quand je rapatrie la page.htm
    bon alors, du au header ou à quelque chose qui le perturbe coté php
    ( attention à l'utilisation de header, doit être fait avant toutes autres
       choses... même un espace ! )
   
    parce que : html =>> meta
                        javascript =>> setRequestHeader
                        php =>> header
    et c'est tout ( je disais même certains probablement inutiles,
            mais je n'ai pas  tout testé )

>>Je vais tester ton code, si ça marche pas

    "il fonctionne" :

3 lignes, pas plus     ;-)
    
tant qu'à appliquer dans ton appli...

>>mais bon là aussi ça bloque quand je met le tout dans un bouton de type
onsubmit
>>et pas dans un bouton de type button.
>>D'ailleurs, est ce que 
tu as une idée à propos de ce problème?
    ça devrait faire l'objet d'une autre question je pense.
    "pas de raisons", sauf appel de fonction javascript, pas là "où il faut" ?
    mais pas assez d'infos.




<hr />



Cordialement                Bul         [mon Site]     [M'écrire]



<hr />




Généralement, c'est absurde de généraliser.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
Bonjour Jarod,

    je ne vois pas le problème ?

    les accents sont des caratères normaux ( enfin, pour les langues qui en possèdent ! )
        et ils se gèrent tout seul, comme les autres caractères, sans rien afire ( ouf ! )

    ou alors, c'est un problème en liaison avec un transfert vers le langage sur
       le serveur ?
       et là, faut être cohérent partout ( type mime, doctype, setrequestheader... )
          et tout baigne ( y compris utf-8, sans bom )

    ou alors, je n'ai pas compris la question.

<hr />


Cordialement             Bul     [mon Site]     [M'écrire]



<hr />
Messages postés
273
Date d'inscription
samedi 5 juillet 2003
Statut
Membre
Dernière intervention
31 mars 2015
2
Salut,
C'est que j'ai pas été très clair dans ma question. En fait, dans mon editeur WYSIWYG lorsque j'ecris un texte comprenant des accents, par exemple ê : son code HTML &ecirc n'est pas généré. Ce n'est pas tellement un problème puisque lorsque j'affiche la page tous les accents s'affichent. Le problème, c'est que lorsque je veux récupérer ce fichier sur le serveur afin de le modifier avec mon appli WYSIWYG tous les accents ont disparues et ils sont remplacé par un caractère ?.

Du coup, je sais pas si cela vient du fait de la méthode de récupération du fichier (méthode AJAX) ou bien du fait que dans mon appli WYSIWYG, je ne génère pas le code HTML associé à un accent.

Je sais pas si mes explications sont claires. Au cas, où dis moi le.
Merci.
@+

Jarod_Delaware
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
>>lorsque je veux récupérer ce fichier sur le serveur afin de le modifier
avec mon
>>appli WYSIWYG tous les accents ont disparues et ils sont
remplacé par un caractère ?.

je me cite ?



ou alors, c'est un problème en liaison avec un transfert vers le langage sur
       le serveur ?
       et là, faut être cohérent partout ( , doctypesetrequestheader(content-type)... )
          et tout baigne ( y compris utf-8, sans bom )



    tu n'as pas à passer par ces &caractèresALC. à priori.


   

si tu y tenais, à mon avis, hors  .replace("é"&ecirc");   point de salut.



<hr />



Cordialement                Bul         [mon Site]     [M'écrire]



<hr />
Messages postés
273
Date d'inscription
samedi 5 juillet 2003
Statut
Membre
Dernière intervention
31 mars 2015
2
Ok merci pour les précisions Bultez. Je vais quand même essayer de remplacer les caractères accentués par leur code HTML associé. Je suis en train d'y bosser mais bon ça marche pas des masses.

Ce que je fais, je récupère le contenu de ma région éditable qui se trouve entre une balise de type
dans un textarea en faisant un onsubmit. Puis avec le contenu du textarea j'envoi un fonction qui doit remplacer les caractères accentués dans le textarea. Le problème, c'est que le texte présent dans le textarea ne change pas, enfin du moins je n'ai pas l'impression que les caractères accentués soit remplacé, c'est plutôt chiant puisque c'est à partir du textarea que j'enregistre le tout dans un fichier html.

Je met ma source ci dessous :
<script language= "Javascript">
function Remplacer()
{
var a, tmp;
tmp = "";

a = document.formtest.toto.value;


for(var i = 0; i < a.length; i++)
{
tmp = tmp + a.charAt(i);


 if (a.charAt(i) == "'" || "ê" || "é" || "è" || "ç" || "à" || "â" || "î" || "û" || "ô" || "ù" || "ë" || "ï")
 {
 //tmp = tmp.replace("'","&#39;");
 tmp = tmp.replace("ê","&ecirc;");
 tmp = tmp.replace("é","&eacute;");
 tmp = tmp.replace("è","&egrave;");
 tmp = tmp.replace("ç","&ccedil;");
 tmp = tmp.replace("à","&agrave;");
 tmp = tmp.replace("â","&acirc;");
 tmp = tmp.replace("î","&icirc;");
 tmp = tmp.replace("û","&ucirc;");
 tmp = tmp.replace("ô","&ocirc;");
 tmp = tmp.replace("ù","&ugrave;");
 tmp = tmp.replace("ë","&euml;");
 tmp = tmp.replace("ï","&iuml;");
 }
}


a = tmp;


alert(a);
document.formtest.getElementById('toto').value=a;
}




</script>
</head>



<form name="formtest" onsubmit="document.getElementById('toto').value=document.getElementById('Editor').innerHTML; Remplacer(); alert(document.formtest.getElementById('toto').value);" >

être éventuellement grèppe ça hàk lâche huîtol clôt gùre kë gloï

<textarea id ="toto"></textarea>

</form>

Jarod_Delaware
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
le replace ce fait sur le contenu

function remplacer(ou)
{   var tmp = ou.replace(/ê/g,"&ecirc;");
     tmp = tmp.replace(/é/g,"&eacute;");
    ...
    return tmp;
}

    textarea .value =remplacer(textarea.value);

    je suppose que c'est dans un textarea...

    on peut mieux faire ! ( array des caractères ... )

    mais franchement, j'éviterais !
    comme il n'y a rien à faire que de bien mettre doctype et le reste...

<hr />
Cordialement                Bul     [mon Site]     [M'écrire]
<hr />
Messages postés
273
Date d'inscription
samedi 5 juillet 2003
Statut
Membre
Dernière intervention
31 mars 2015
2
Est ce que tu pourrais me préciser le dernier point : doctype, etc... Parce que si je peux eviter de faire du replace, je pense que ça serais mieux.
Au sinon, pour l'array de caractères, il faudrais mettre tous les caractères dans un tableau?

Merci beaucoup pour ton aide.
@+

Jarod_Delaware
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
pourquoi ai-je parlé de doctype et pas de meta ?
ma mémoire d'Alzheimer ?
mais doctype joue souvent, sur pleins de trucs.... !!!
une réminiscence d'un souci lié à ces accents ?

html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML    Lang="fr">
<HEAD>
    <meta http-equiv="content-type"
            content="text/html; charset=ISO-8859-1">
    ...

php
    header('Content-type:text/html;charset=ISO-8859-1');
      
javascript
    xml.setRequestHeader("Content-type", "charset=iso-8859-1");

ça doit  être largement suffisant ( et certains sont inutiles )

<hr />


Cordialement                Bul     [mon Site]     [M'écrire]



<hr />
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
>> il faudrais mettre tous les caractères dans un tableau
    du style
       var accent=new Array("é","è"...)
       var alaplace=new Array("&euh","&nimporte",... )
       et une ch'tite boucle   sur ...replace(accent[indice],alaplace[indice])...




<hr />



Cordialement                Bul     [mon Site]     [M'écrire]



<hr />
Messages postés
273
Date d'inscription
samedi 5 juillet 2003
Statut
Membre
Dernière intervention
31 mars 2015
2
Ok, merci pour toutes ces précisions; tout ce qui concerne le doctype et le meta, je dois l'insérer dans le code de mon appli WYSIWG?
Concernant la ligne :

xml.setRequestHeader("Content-type", "charset=iso-8859-1");

Est ce que je dois la mettre dans ma requete Ajax  et où exactement?

function ModifierFile() {
objXml = new ActiveXObject("Microsoft.XMLHTTP");


var datafile = "data.txt";
objXml.open("GET", datafile, true);
objXml.onreadystatechange=function() {
   if (objXml.readyState==4) {
       display(objXml.responseText);
  }
 }


objXml.send(null);


function display(msg) {
    window.opener.insertHTML(msg);
}
Merci encore.
Jarod_Delaware
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
un seul endroit possible :
    après l'open ( sinon ça planterait )  ,
    et avant le send ( sinon, ce serait trop tard, et ça planterait )

objXml.open("GET", datafile, true);
==> ici
objXml.onreadystatechange=function() {
   if (objXml.readyState==4) {
       display(objXml.responseText);
  }
 }
=> ou là [ rien que pour me contredire ;-) ]
objXml.send(null);

<hr /> Cordialement Bul [mon Site] [M'écrire]<hr />
Messages postés
273
Date d'inscription
samedi 5 juillet 2003
Statut
Membre
Dernière intervention
31 mars 2015
2
J'ai intégré ce que tu m'as marqué, mais j'ai toujours la même chose, les caractères accentués sont remplacés par un point d'interrogation.

J'ai voulu egalement retester la fonction pour changer les caractères accentués en code HTML associé mais apparemment ça ne marche plus lorsque je l'execute dans un onsubmit. Là je suis perdu

Jarod_Delaware
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
et coté serveur ? la réponse est bien aussi "
iso-8859-1"
car tu parles de caractères remplacés par un ?.... donc à l'affichage.
coté serveur teste un "é". ça devrait être bon, au niveau de l'envoi.


<hr />



Cordialement                Bul         [mon Site]     [M'écrire]



<hr />
    Généralement, c'est absurde de généraliser.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
je te met un ch'tit exemple :

                page Accents_iso.htm

<HTML    Lang= "fr">
<meta http-equiv="content-type"
        content="text/html; charset=ISO-8859-1">

sauver les sources en utf-8

envoyer : Valider
reçu    : <textarea id ="rec" style="width:80%;height:50%"></textarea>
<script type="text/javascript">
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function xmlhttp()    //~~ XMLHTTP ~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{    var x;
    try           {    x = new ActiveXObject("Microsoft.XMLHTTP");    }
    catch (e)     {    try               {    x = new ActiveXObject("Msxml2.XMLHTTP");    }
                        catch (e)     {    try            {    x = new XMLHttpRequest();    }
                                            catch (e)    {    x=false;    }
                                        }
                    }
    return x;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function appel()    //~~ Appel ~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{    var xml = xmlhttp();
    if(!xml)
            {    alert("XmlHttpRequest non supporté");    }
    else    {    xml.onreadystatechange = function()
                {     if(xml.readyState == 4)
                    {    if (xml.status == 200)
                                {    document.getElementById('rec').value=xml.responseText;    }
                        else    {    document.getElementById('rec').value="problème xmlhttprequest";    }
                    }
                }
                try                {    netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');    }
                catch(erreur)    {    }
                xml.open("POST", "Accents_iso.php", true);
                xml.setRequestHeader("Content-type", "charset=iso-8859-1");
                var tmp="env="+document.getElementById('env').value;
                try             {     xml.send(tmp);     }
                catch (e)    {    }
            }
}
</script>

</html>

                page Accents_iso.php

<?php header('Content-type:text/html;charset=ISO-8859-1'); ?>
envoi php:éàèê  reçu du javascript :<?php echo $_POST['env']."\n";?>

    et... ça baigne ( euh testé en loacl, avec easyphp, pas de raisons
        que sur un site ça change à priori )

<hr />


Cordialement            Bul         [mon Site]     [M'écrire]



<hr />
            Généralement, c'est absurde de généraliser.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
ne fais pas attention aux commentaires ( utf-8 et
poblème ... )


mon exemple était à l'origine pour du utf-8 et le copié/collé...
<hr />


Cordialement                Bul     [mon Site]     [M'écrire]



<hr />




Généralement, c'est absurde de généraliser.
Messages postés
273
Date d'inscription
samedi 5 juillet 2003
Statut
Membre
Dernière intervention
31 mars 2015
2
en fait, quand j'affiche la page sur le serveur, les accents sont là. C'est quand je rapatrie la page.htm dans l'appli WYSIWYG que tous les accents sont remplacés par des ?.
Je vais tester ton code, si ça marche pas je serais bien obligé de partir sur la piste des replace(...) mais bon là aussi ça bloque quand je met le tout dans un bouton de type onsubmit et pas dans un bouton de type button. D'ailleurs, est ce que  tu as une idée à propos de ce problème?

merci encore pour l'aide.
@+

Jarod_Delaware
Messages postés
273
Date d'inscription
samedi 5 juillet 2003
Statut
Membre
Dernière intervention
31 mars 2015
2
ouf, ça y est ça marche avec tes explications. C'est moi qui avait foiré quelque part dans mon code.

Pour l'autre problème du bouton type onsubmit et le bouton type button, c'est réglé également. Je croyais que l'action ne se faisait pas lorsque je j'etais en configuration bouton onsubmit, exemple :

Mais bon ça à l'air de marcher dans les 2 cas de figures. J'ai plus réellement besoin de ce truc étant donné que je passe par le doctype, etc... maintenant

Merci beaucoup pour ton aide Bultez.
@+
Jarod_Delaware
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
si ça marche... nickel.

tant qu'au bouton submit, j'utilise toujours ( sauf cas très très particulier )
        le onsubmit du formulaire, qui est là pour ça.

au lieu de
    <form ....>
       ...

je préfère ( chacun ses goûts, mais c'est  la "voie normale" )
    <form onsubmit="du javascript..." ...>
       ...




Cordialement.





<hr />



                Bul         [mon Site]     [M'écrire]



<hr />





Généralement, c'est absurde de généraliser.