Forums Développement Multimédia

Aller au contenu

Conversion ISO vers UTF8

CODE Actionscript

6 réponses à ce sujet

#1 preperfect

    Ceinture Blanche

  • Members
  • Pip
  • 8 messages

Posté 06 December 2011 - 11:26 AM

Salut,
J'envoi un fichier(générer puis crypter par php) encoder en iso (cryptage oblige) à mon script AS3 (les é apparaissent en é entre autres) et je cherche à convertir l'encodage de celui-ci vers de l'utf8 en AS3 (une fois le fichier decrypté), j'ai trouver un script sur http://www.webtoolki...cript-utf8.html :

/**
*
*  UTF-8 data encode / decode
*  http://www.webtoolkit.info/
*
**/

 
var Utf8 = {
 
        // public method for url encoding
        encode : function (string) {
 
                var utftext = "";
 
                for (var n = 0; n < string.length; n++) {
 
                        var c = string.charCodeAt(n);
 
                        if (c < 128) {
                                utftext += String.fromCharCode(c);
                        }
                        else if((c > 127) && (c < 2048)) {
                                utftext += String.fromCharCode((c >> 6) | 192);
                                utftext += String.fromCharCode((c & 63) | 128);
                        }
                        else {
                                utftext += String.fromCharCode((c >> 12) | 224);
                                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                                utftext += String.fromCharCode((c & 63) | 128);
                        }
 
                }
 
                return utftext;
        },
 
        // public method for url decoding
        decode : function (utftext) {
                var string = "";
                var i = 0;
                var c = c1 = c2 = 0;
 
                while ( i < utftext.length ) {
 
                        c = utftext.charCodeAt(i);
 
                        if (c < 128) {
                                string += String.fromCharCode(c);
                                i++;
                        }
                        else if((c > 191) && (c < 224)) {
                                c2 = utftext.charCodeAt(i+1);
                                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                                i += 2;
                        }
                        else {
                                c2 = utftext.charCodeAt(i+1);
                                c3 = utftext.charCodeAt(i+2);
                                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                                i += 3;
                        }
 
                }
 
                return string;
        }
 
}
Que j'ai modifier pour l'AS3
Qui fonctionne parfaitement, mais je me demandais s'il n'existait pas une fonction déjà existante en AS3 (un peu comme utf8_encode de PHP)

Merci

Modifié par preperfect, 06 December 2011 - 11:27 AM.


#2 deuxsucres

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 115 messages

Posté 06 December 2011 - 15:36 PM

Bonjour,

Je ne crois pas qu'il existe de fonction en AS3 pour faire cela. Il est possible de demander à Flash d'interpréter les fichiers texte externes dans le charset du système d'exploitation, mais en interne le traitement des caractères se fera toujours en unicode. Voir flash.system.System.useCodePage.

#3 lilive

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2993 messages

Posté 07 December 2011 - 00:56 AM

Bonsoir,
Peut-être (je n'ai jamais essayé) charger le texte au format binaire (URLLoader.dataFormat=URLLoaderDataFormat.BINARY) puis lire dans le ByteArray ainsi obtenu avec la méthode
ByteArray.readMultiByte(length:uint, charSet:String):String. Cette méthode accepte les charsets suivants.

[edit]
Heu, enfin, là je fais comme si tu chargeais le texte avec un URLLoader, mais si je comprends bien tu décryptes d'abord en AS3 les données reçues. Le code de décryptage te renvoie une String? Il ne peut pas te renvoyer un ByteArray plutôt? Sinon il va falloir remplir un ByteArray avec les données de la String dans un premier temps, puis utiliser readMultiByte ensuite, je pense.

#4 preperfect

    Ceinture Blanche

  • Members
  • Pip
  • 8 messages

Posté 07 December 2011 - 09:52 AM

@lilive: Exact, je charge le texte, je le decrypt et c'est après ça que je dois le convertir en UTF8
Je vais tenter de modifier mon code pour que ma fonction de décryptage me renvoi un ByteArray au lieu d'une string

@deuxsucres: le flash.system.System.useCodePage(true ou false) n'as rien changer :(

Merci pour vos réponse

#5 preperfect

    Ceinture Blanche

  • Members
  • Pip
  • 8 messages

Posté 07 December 2011 - 12:00 PM

J'ai modifier ma fonction :

var str:String;
...
var byte:ByteArray = new ByteArray();
byte.writeMultiByte(str, "iso-8859-1");
return byte.toString();

Qui retourne bien ma chaine en tuf-8

Encore merci

#6 deuxsucres

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 115 messages

Posté 07 December 2011 - 15:02 PM

Je n'avais jamais fait attention à cette méthode. Merci.

#7 lilive

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2993 messages

Posté 07 December 2011 - 15:58 PM

Voir le messagepreperfect, le 07 December 2011 - 12:00 PM, dit :

var str:String;
...
var byte:ByteArray = new ByteArray();
byte.writeMultiByte(str, "iso-8859-1");
return byte.toString();
Ah, tout simplement!
Je me note le code.
++



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)