Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Enregistrer le contenu d'une texbox qui contiend du Russe.

Envoyé par : efdur

Date : 29/12/2006 14:32

Bonjour,
Si ma textbox contiens (bonjour en RUSSE) lorsque j'enregistre j'obtiens "74@02AB2C9B5!"
Ma fonction qui enregistre:(result1 la textbox)

function saveSeturl() {
   var url = document.getElementById("result").value;  
 { var prefs = {	url1: url };
   enregistrerPrefs("extensions.bzm.",prefs);     
 } 
   var titre = document.getElementById("result1").value;
 { var prefs = {	titre1: titre};
   alert('prefs : ' + titre); 
   enregistrerPrefs("extensions.bzm.",prefs);  
 }
}

Mon alerte me renvois bien le contenu de la textebox et je me retrouve avec un 74@02AB2C9B5! dans mes préférences :( Quelqu'un a une idée ,c'est un problème d'utf-8?

# Re: Enregistrer le contenu d'une texbox qui contiend du Russe.

Envoyé par : thefab

Date : 30/12/2006 18:50

Quelqu'un a une idée ,c'est un problème d'utf-8?

Je suppose que oui, les préférences sont certainement enregistrées en iso-8859-1. Ca me fait la même chose avec les chemins de fichiers avec des accents.

# Re: Enregistrer le contenu d'une texbox qui contiend du Russe.

Envoyé par : efdur

Date : 31/12/2006 10:50

Merci thefab, y a t'il un autre moyen de sauvegarder ce titre, ça pourrais peut être ce faire dans un fichier .txt ?

# Re: Enregistrer le contenu d'une texbox qui contiend du Russe.

Envoyé par : thefab

Date : 08/01/2007 15:04

Si tu veux l'enregistrer toi-même dans un fichier tu dois le faire à la main: http://developer.mozilla.org/fr/docs/Ext(..) et http://developer.mozilla.org/en/docs/Wri(..)

# Re: Enregistrer le contenu d'une texbox qui contiend du Russe.

Envoyé par : efdur

Date : 08/01/2007 21:07

Finalement c'est possible d'au moins deux façons:(mais merci :) je vais quand méme aller voir tes liens)

  • la premiere:
{  prefs = GetPreftitre1();
    document.getElementById("result1").value = unescape(prefs.titre1);
 }
var titre = escape(document.getElementById("result1").value);
 { var prefs = {    titre1: titre };
   enregistrerPrefs("extensions.bzm.",prefs);  
 }
  • la seconde:
 // JavaScript Document
function enregistrerPrefs(monapli, pPrefs, bUnicode)
{
   var service = Components.classes["@mozilla.org/preferences-service;1"]
                   .getService(Components.interfaces.nsIPrefService)
                   .getBranch(monapli);    
   try
   {
       var oPLS = Components.classes["@mozilla.org/pref-localizedstring;1"].createInstance(Components.interfaces.nsIPrefLocalizedString);
       var sType = "";
       for(p in pPrefs)
       {
           sType = typeof(pPrefs[p]);
           if (bUnicode) sType = "unicode";
           switch (sType)
           {
               case "string":
                       service.setCharPref(p, pPrefs[p]);
                       break;
               case"number":
                       service.setIntPref(p, pPrefs[p]);
                       break;
               case "boolean":
                       service.setBoolPref(p, pPrefs[p]);
                       break;
               case "unicode":
                       oPLS.data = pPrefs[p];
                       service.setComplexValue(p, Components.interfaces.nsIPrefLocalizedString, oPLS);
                       break;
           }
       }
   }
   catch(e)
   {
       alert("erreur" + e);
   }
}
function chargerPrefs(monapli, prefs, bUnicode)
{
   var service = Components.classes["@mozilla.org/preferences-service;1"]    
       .getService(Components.interfaces.nsIPrefService)    
                  .getBranch(monapli);
   var branche = Components.classes["@mozilla.org/preferences-service;1"]    
       .getService(Components.interfaces.nsIPrefBranch);
   try
   {
       var sType = "";
       for(p in prefs)
       {
           iType = service.getPrefType(p);
           if (bUnicode) iType = branche.PREF_UNICODE;
           switch (iType)
           {
               case branche.PREF_STRING: //32
                       prefs[p] = service.getCharPref(p);
                       break;
               case branche.PREF_INT: //64
                       prefs[p] = service.getIntPref(p);
                       break;
               case branche.PREF_BOOL: //128
                       prefs[p] = service.getBoolPref(p);
                       break;
               case branche.PREF_UNICODE://256
               try {prefs[p] = service.getComplexValue(p, Components.interfaces.nsIPrefLocalizedString).data;}
               catch (e) {prefs[p] = service.getCharPref(p);}
               break;
           }
       }
   }
   catch(e)
   {
       alert(e);
   }
   return prefs;
}

Et dans les prefs a enregistrer en unicode je rajoute "true" dans la fonction comme cela:

var titre = document.getElementById("result1").value;
 { var prefs = {	titre1: titre};
   enregistrerPrefs("extensions.bzm.",prefs,"true");  
 }

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.