Comment gérer les accents appli WYSIWYG

Résolu
Jarod1980 Messages postés 273 Date d'inscription samedi 5 juillet 2003 Statut Membre Dernière intervention 31 mars 2015 - 8 août 2007 à 15:32
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 10 août 2007 à 11:38
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

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
9 août 2007 à 14:00
>>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.
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
9 août 2007 à 09:16
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 />
0
Jarod1980 Messages postés 273 Date d'inscription samedi 5 juillet 2003 Statut Membre Dernière intervention 31 mars 2015 2
9 août 2007 à 09:42
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
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
9 août 2007 à 10:09
>>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 />
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Jarod1980 Messages postés 273 Date d'inscription samedi 5 juillet 2003 Statut Membre Dernière intervention 31 mars 2015 2
9 août 2007 à 10:22
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
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
9 août 2007 à 10:39
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 />
0
Jarod1980 Messages postés 273 Date d'inscription samedi 5 juillet 2003 Statut Membre Dernière intervention 31 mars 2015 2
9 août 2007 à 10:49
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
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
9 août 2007 à 11:07
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 />
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
9 août 2007 à 11:19
>> 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 />
0
Jarod1980 Messages postés 273 Date d'inscription samedi 5 juillet 2003 Statut Membre Dernière intervention 31 mars 2015 2
9 août 2007 à 11:28
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
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
9 août 2007 à 11:43
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 />
0
Jarod1980 Messages postés 273 Date d'inscription samedi 5 juillet 2003 Statut Membre Dernière intervention 31 mars 2015 2
9 août 2007 à 12:00
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
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
9 août 2007 à 12:18
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.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
9 août 2007 à 12:29
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.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
9 août 2007 à 12: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.
0
Jarod1980 Messages postés 273 Date d'inscription samedi 5 juillet 2003 Statut Membre Dernière intervention 31 mars 2015 2
9 août 2007 à 13:37
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
0
Jarod1980 Messages postés 273 Date d'inscription samedi 5 juillet 2003 Statut Membre Dernière intervention 31 mars 2015 2
9 août 2007 à 16:18
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
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
10 août 2007 à 11:38
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.
0
Rejoignez-nous