• 大小: 2.16 KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2024-09-29
  • 语言: Java
  • 标签: base64  java  

资源简介

Java编写的Base64编码和解码程序,支持中文。

资源截图

代码片段和文件信息

/** A simple base64 encoding and decoding utility class
 * it can also encode and decode non ASII characters such as 
 * Chinese
 */

/**
 * This software is provided “AS IS“ without a warranty of any kind.
 * anyone can use it for freeemails are welcomed concerning bugs or
 * suggestions.
 */

/**
 * base64.java.  
 *
 * @version 1.0 06/19/2001
 * @author Wen Yu yuwen_66@yahoo.com
 */
package cafe.util;

public final class base64
   {

    private static final char[] base64Map =  //base64 character table

         { ‘A‘‘B‘‘C‘‘D‘‘E‘‘F‘‘G‘‘H‘‘I‘‘J‘‘K‘‘L‘‘M‘‘N‘
           ‘O‘‘P‘‘Q‘‘R‘‘S‘‘T‘‘U‘‘V‘‘W‘‘X‘‘Y‘‘Z‘‘a‘‘b‘
           ‘c‘‘d‘‘e‘‘f‘‘g‘‘h‘‘i‘‘j‘‘k‘‘l‘‘m‘‘n‘‘o‘‘p‘
           ‘q‘‘r‘‘s‘‘t‘‘u‘‘v‘‘w‘‘x‘‘y‘‘z‘‘0‘‘1‘‘2‘‘3‘
           ‘4‘‘5‘‘6‘‘7‘‘8‘‘9‘‘+‘‘/‘ } ;
 
  /** convert the platform dependent string characters to UTF8 which can 
    * also be done by calling the java String method getBytes(“UTF-8“)but I
* hope to do it from the ground up.
*/

    private static byte[] toUTF8ByteArray(String s) 
{
 int ichar; 
 byte buffer[]=new byte[3*(s.length())];
         byte hold[];
 int index=0;
     int count=0; //count the actual bytes in the
                      //buffer array   
 
 for(int i=0;i  { 
       ichar = (int)s.charAt(i);

      //determine the bytes for a specific character
   if((ichar>=0x0080)&(ichar<=0x07FF))
 {
   buffer[index++] = (byte)((6<<5)|((ichar>>6)&31));
   buffer[index++] = (byte)((2<<6)|(ichar&63));
   count+=2;
 }
  
   //determine the bytes for a specific character
   else if((ichar>=0x0800)&(ichar<=0x0FFFF))
 {
   buffer[index++] = (byte)((14<<4)|((ichar>>12)&15));
   buffer[index++] = (byte)((2<<6)|((ichar>>6)&63));
   buffer[index++] = (byte)((2<<6)|(ichar&63));
   count+=3;
 }
 
      //determine the bytes for a specific character
   else if((ichar>=0x0000)&(ichar<=0x007F))
 {
                   buffer[index++] = (byte)((0<<7)|(ichar&127));  
   count+=1;
 }

              //longer than 16 bit Unicode is not supported
   else throw new RuntimeException(“Unsupported encoding character length!\n“);
 }
         hold = new byte[count];
         System.arraycopy(buffer0hold0count); //trim to size
         return hold ;
}

    public static String encode(String s)
    {
   byte buf[] = toUTF8ByteArray(s);
     return encode(buf);
    }

public static String encode(byte buf[]) 
    {     
         StringBuffer sb = new StringBuffer();
         String padder = ““ ; 
 
         if( buf.length == 0 )  return ““ ; 
       
         //cope with less than 3 bytes conditions at the end of buf
 
 switch( buf.length%3)
         {
               case 1 : 
               { 
                  padder += base64Map[(( buf[buf.length-1] >>> 2 ) &

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       6894  2008-12-19 13:29  base64.java

----------- ---------  ---------- -----  ----

                 6894                    1


评论

共有 条评论