problema adobe flex con Base64Encoder
-
22-07-2019 - |
Domanda
nel seguente codice:
var benq:Base64Encoder = new Base64Encoder();
benq.encode("force",0,5);
var tmp:String = benq.toString();
'tmp' risulta essere una stringa vuota, cioè con lunghezza 0. perché? come codificare una stringa usando base64encoder?
Soluzione
Sei sicuro che il tuo codice non funzioni. L'ho appena copiato e incollato in un'app di test e ha restituito tmp come 'Zm9yY2U ='
Stai facendo qualcos'altro al var tmp? se il debug si assicura che abbia elaborato la riga var tmp: String .... quando si controlla l'output
<?xml version="1.0" encoding="utf-8"?><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
verticalAlign="middle"
backgroundColor="white"
creationComplete="but1.label = encodeit()">
<mx:Script>
<![CDATA[
import mx.utils.Base64Encoder;
private function encodeit(): String {
var benq:Base64Encoder = new Base64Encoder();
benq.encode("force",0,5);
var tmp:String = benq.toString();
return tmp;
}
]]>
</mx:Script>
<mx:Button
id="but1"
width="100"
height="100"
/></mx:Application>
Altri suggerimenti
Stai usando Flex 3, in quanto sembra essere una nuova funzionalità? Prova anche a codificare in un bytearray usando encodeBytes e usando encodeUTFBytes, forse funzionano meglio.
Il riferimento online è disponibile da Adobe , ma immagino tu lo sappia.
Ok, funziona. Il codice che ho pubblicato era diverso da quello che stavo effettivamente usando. Ho ignorato il fatto che chiamando toString () per Base64Encoder cancella il suo buffer interno. Quindi, chiamandolo la prossima volta sarebbe tornato una stringa vuota. Ci scusiamo per il disturbo.