Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# forcer UTF-8

Envoyé par : xavax

Date : 24/09/2009 00:19

Bonjour,

Voici mon problème:

Ce script crée un fichier sur le bureau et écrit dedans une chaine de caractères. MAIS :

  • si la chaine de caractères n'a pas d'accents (ex: "ozfefj") le fichier crée est ANSI.
  • si la chaine contient des caractères, le fichier crée est UTF-8 sans BOM.

Comment forcer l'écriture en UTF-8 ?

function WriteTestFile(str){
   var dirService = Components.classes["@mozilla.org/file/directory_service;1"]
     .getService( Components.interfaces.nsIProperties);
   var file = dirService.get("Desk", Components.interfaces.nsIFile)
     .QueryInterface(Components.interfaces.nsILocalFile);
   file.append("test_file_utf8.txt");
   try {
       var fileOutStream = Components.classes['@mozilla.org/network/file-output-stream;1']
         .createInstance(Components.interfaces.nsIFileOutputStream);
       try {
           var convutf8 = Components.classes['@mozilla.org/intl/scriptableunicodeconverter'].createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
           convutf8.charset = "UTF-8";
           str = convutf8.ConvertFromUnicode(str);
       }
       catch(e) {
           alert ('erreur1')
       }
       fileOutStream.init(file, 0x02 | 0x08 | 0x20, 0777, null);
       fileOutStream.write(str, str.length);
       fileOutStream.close();
   }
   catch(e) {
       alert ('erreur2');
   }
}
WriteTestFile("ooo");
//WriteTestFile("éàè");

j'ai beau cherché, je n'arrive pas à résoudre ce problême utf-8. Si quelqu'un peut m'aider, ...

bons clics à tous Xavax

# Re: forcer UTF-8

Envoyé par : jérôme

Date : 24/09/2009 08:42

Bonjour, moi, pour convertir en utf8, j'utilise cette fonction :

function encodeUTF8(str){
var encoder = Components.classes["@mozilla.org/intl/utf8converterservice;1"]
           .createInstance(Components.interfaces.nsIUTF8ConverterService);
return encoder.convertStringToUTF8(str,"ISO-8859-1",true);
}

Si cela peut t'aider...

# Re: forcer UTF-8

Envoyé par : xavax

Date : 24/09/2009 12:46

merci, mais ça ne marche toujours pas.

# Re: forcer UTF-8

Envoyé par : thefab

Date : 25/09/2009 13:05

Ton code fonctionne... (en tout cas chez moi, XP Pro, XULRunner 1.9.2)

Edit: C'est peut être dû au fait que ton fichier XUL ne soit pas en UTF-8, quel encodage utilises-tu pour tes fichiers .xul ?

Edit2: En fait ça fonctionne si le texte provient du XUL (en UTF-8) mais pas si le texte est placé dans le JS (sauf si celui-ci est aussi en UTF-8 ?)

Résumé:

  • Texte dans XUL (UTF-8) -> JS (ISO-8859-1) = OK ton code fonctionne
  • XUL (UTF-8) -> Texte dans JS (ISO-8859-1) = KO ne fonctionne pas !!!

Edit3: Si le JS est en UTF-8 alors même le texte est bien convertit avec cette méthode ;-)

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.