资源简介
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 ba
----------- --------- ---------- ----- ----
6894 1
相关资源
- java sql2000员工管理系统数据库、文档
- java笔试题汇总及答案(另附各大公司
- java版多人聊天室
- java小作业 人事管理系统
- 电话本(Java编写的在控制台上运行)
- java端口扫描程序
- java web网络通讯录
- Java课程设计(15个经典案例)
- java实现POS系统源码
- 俄罗斯方块具体设计(Java描述)带详
- 用JAVA做的通讯录(精简版)
- java数据库版学生成绩管理系统
- 基于java聊天室(gui)
- Java版聊天程序(UDP TCP 多线程)
-
java操作xm
l文件的一个简单代码 - 简单qq聊天(Java socket实现)
- java多人五子棋源码
- java多线程编程 在主线程main中创建两
- JAVA计算器实验报告与源码
- 人事信息管理系统 java课程设计
- 学生信息管理系统 JAVA课程设计
- 自己用java写的计算器源代码(代码注
- 棋盘覆盖---JAVA版
- 语音识别 sphinx4 JAVA 教程
- 用Java实现TCP通信
- java SQLServer做的员工管理系统
- JAVA坦克大战游戏源代码
- 用Java编写的扫雷游戏源代码
- 采用TCP SOCKET技术编写C/S模式的java聊天
- 《java程序设计》书附源代码
评论
共有 条评论