base64编码、解码函数

编码|函数

这是我看完几个base64编码、解码函数后自己改写的。
因为,在中文操作系统的VBscript中,使用的是unicode字符集,所以
很多base64编码、解码函数在理论上是正确的,但实际不能运行!

我加写了几个Unicode与Ansi编码转换的函数,现贴出来,请大家执教!

文件名称base64test.asp

<%

sBASE_64_CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"  
sBASE_64_CHARACTERS = strUnicode2Ansi(sBASE_64_CHARACTERS)

Function strUnicodeLen(asContents)
  '计算unicode字符串的Ansi编码的长度
  asContents1="a"&asContents
  len1=len(asContents1)
  k=0
  for i=1 to len1
      asc1=asc(mid(asContents1,i,1))
      if asc1<0 then asc1=65536+asc1
      if asc1>255 then
         k=k+2
      else
         k=k+1
      end if
  next
  strUnicodeLen=k-1
End Function

Function strUnicode2Ansi(asContents)
  '将Unicode编码的字符串,转换成Ansi编码的字符串
  strUnicode2Ansi=""
  len1=len(asContents)
  for i=1 to len1
      varchar=mid(asContents,i,1)
      varasc=asc(varchar)
      if varasc<0 then varasc=varasc+65536
      if varasc>255 then
         varHex=Hex(varasc)
         varlow=left(varHex,2)
         varhigh=right(varHex,2)
         strUnicode2Ansi=strUnicode2Ansi & chrb("&H" & varlow ) & chrb("&H" & varhigh )
      else
         strUnicode2Ansi=strUnicode2Ansi & chrb(varasc)
      end if
   next
End function

Function strAnsi2Unicode(asContents)
  '将Ansi编码的字符串,转换成Unicode编码的字符串
  strAnsi2Unicode = ""
  len1=lenb(asContents)
  if len1=0 then exit function
  for i=1 to len1
      varchar=midb(asContents,i,1)
      varasc=ascb(varchar)
      if varasc > 127  then
         strAnsi2Unicode = strAnsi2Unicode & chr(ascw(midb(asContents,i+1,1) & varchar))
         i=i+1
      else
         strAnsi2Unicode = strAnsi2Unicode & chr(varasc)
      end if
  next
End function

Function Base64encode(asContents)  
'将Ansi编码的字符串进行Base64编码
'asContents应当是ANSI编码的字符串(二进制的字符串也可以)
Dim lnPosition  
Dim lsResult  
Dim Char1  
Dim Char2  
Dim Char3  
Dim Char4  
Dim Byte1  
Dim Byte2  
Dim Byte3  
Dim SaveBits1  
Dim SaveBits2  
Dim lsGroupBinary  
Dim lsGroup64  
Dim m4,len1,len2

len1=Lenb(asContents)
if len1<1 then
   Base64encode=""
   exit Function
end if

m3=Len1 Mod 3
If M3 > 0 Then asContents = asContents & String(3-M3, chrb(0))  
'补足位数是为了便于计算

IF m3 > 0 THEN
   len1=len1+(3-m3)
   len2=len1-3
else
   len2=len1
end if

lsResult = ""  

For lnPosition = 1 To len2 Step 3  
    lsGroup64 = ""  
    lsGroupBinary = Midb(asContents, lnPosition, 3)  

    Byte1 = Ascb(Midb(lsGroupBinary, 1, 1)): SaveBits1 = Byte1 And 3  
    Byte2 = Ascb(Midb(lsGroupBinary, 2, 1)): SaveBits2 = Byte2 And 15  
    Byte3 = Ascb(Midb(lsGroupBinary, 3, 1))  

    Char1

时间: 2024-09-09 03:35:44

base64编码、解码函数的相关文章

Python base64编码解码实例

  这篇文章主要介绍了Python base64编码解码实例,本文直接给出实例代码,使用也很简单,需要的朋友可以参考下 Python中进行Base64编码和解码要用base64模块,代码示例: ? 1 2 3 4 5 6 7 #-*- coding: utf-8 -*- import base64   str = 'cnblogs' str64 = base64.b64encode(str) print str64 #Y25ibG9ncw== print base64.b64decode(str

用XMLDOM和ADODB.Stream实现base64编码解码实现代码_javascript技巧

复制代码 代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title> 用 XMLDOM 和 ADODB.Stream 实现base64编码解码 </title> <meta http-equiv="Content-Type" content="text/html; cha

node.js学习之base64编码解码_node.js

一. Base64编码由来 为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的字节,例如传统的邮件只支持可见字符的传送,像ASCII码的控制字符就 不能通过邮件传送.这样用途就受到了很大的限制,比如图片二进制流的每个字节不可能全部是可见字符,所以就传送不了.最好的方法就是在不改变传统协议的情 况下,做一种扩展方案来支持二进制文件的传送.把不可打印的字符也能用可打印字符来表示,问题就解决了.Base64编码应运而生,Base64就是一种 基于64个可打印字符来表示二进制数据的表示方法

利用openssl进行BASE64编码解码、md5/sha1摘要、AES/DES3加密解密

本文介绍了openssl的几个实用命令,利用openssl进行BASE64编码解码.md5/sha1摘要.AES/DES3加密解密. 一. 利用openssl命令进行BASE64编码解码(base64 encode/decode)      1. BASE64编码命令       对字符串'abc'进行base64编码:           # echo abc | openssl base64           YWJjCg==  (编码结果)        如果对一个文件进行base64编

MIME和BASE64编码/解码程序代码

首先我要在这里向各位纠正我犯在一个错误:Base64 只是MIME的一种编码方案,我原来所说的 MIME 其实是MIME的另一种编码方案 -- Quoted-Printable ,所以我对本文作了一些修正,并对由此而给大家带来的误导表示歉意. May.6-01 最近在研究 POP3 时碰到一个问题,即其中的中文都是经过 MIME 编码了的,如 MS Outlook Express 是用 Base64 ,而 FoxMail 则用的是QP ,本来想找几个现成的编码/解码的代码,结果只在 UDDF 中

Delphi 自带的 Base64 编解码函数

今天帮别人解决一个关于 Base64 编解码的问题,竟然发现 Delphi 自带了 Base64 编解码的单元,叫 EncdDecd,这名字很拗口而且不直观,估计这是一直很少人关注和知道的原因. 这个单元提供两套四个公开函数: 对流的编解码: procedure EncodeStream(Input, Output: TStream); // 编码 procedure DecodeStream(Input, Output: TStream); // 解码 // 对字符串的编解码: functio

Java base64编码解码工具类

    前几天无意中看到Java中有Base64编码,不解的我去百科了一下,了解了Base64的基本使用和实现原理,于是在空暇时自己手动写了一个,这个类可以完成对字母数字的编码和解码工作,但是对于中文,还没有仔细研究其编码的实现过程.至于什么是Base64,用它来干什么,请移步到:http://zh.wikipedia.org/zh-cn/Base64  下面贴出这个工具类的源代码,供朋友们参考,本人新手写得不好,请用力拍砖: /************************Base64Uti

js url编码解码函数 decodeURIComponent encodeURIComponent

decodeuricomponent() 函数可对 encodeuricomponent() 函数编码的 uri 进行解码. decodeuricomponent(uristring)参数 描述 uristring 必需.一个字符串,含有编码 uri 组件或其他要解码的文本. var test1="http://www.111cn.net/my first/" document.write(encodeuricomponent(test1)+ "<br />&qu

JavaScript中各种编码解码函数的区别和注意事项_javascript技巧

大家在使用JS提交数据时,尤其是中文的时候,经常会需要将要提交的字符串进行URL编码.在JS中对字符串进行URL编码有好几种方 法,encodeURI,encodeURIComponent,还有escape.在我看到的很多代码中escape这个函数用的最多,不过这个函数却 是不推荐使用的.下面我们来分别看看这几个函数: encodeURI:对指定的字符串进行URL编码,不包括 : # / \ = & 这些URL中的关键字符. encodeURIComponent:对字符串中的字符进行编码,包括U

javascript unescape() escape() 字符编码解码函数

escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串. 语法 escape(string)参数 描述 string 必需.要被转义或编码的字符串. 返回值 已编码的 string 的副本.其中某些字符被替换成了十六进制的转义序列 function php教程escape($str) {          $sublen=strlen($str);          $retrunstring="";          for ($i=0;$i<$sub