2009-01-14 36 views
1

在以下代码:土坯挠曲问题Base64Encoder

var benq:Base64Encoder = new Base64Encoder(); 
benq.encode("force",0,5); 
var tmp:String = benq.toString(); 

“TMP”原来是一个空字符串,即具有长度为0 为什么呢? 如何使用base64encoder对字符串进行编码?

回答

3

你确定你的代码不工作吗? 我刚刚复制并粘贴到一个测试应用程序,它返回tmp'Zm9yY2U ='

你是否在做其他任何事情的var tmp?如果调试确保它已经处理了var tmp:String ....行,当你检查输出时

<?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> 
0

您是否正在使用Flex 3,因为它似乎是一项新功能?另外尝试使用encodeBytes编码成bytearray并使用encodeUTFBytes,或许这些工作会更好。

联机参考可用from Adobe,但我想你知道这一点。

0

好吧,它正在工作。 我发布的代码与我实际使用的代码不同。 我跳过了调用toString()为Base64Encoder 清除其内部缓冲区的事实。所以,下一次调用它会返回一个空字符串 。 对不起。