大家好,才是真的好。
不懂Base64的程序员不是好司机。Base64是一种编码、解码技术,将二进制转换为可见字符,这些可见字符总共有64个,所以一般称之为Base64。
之所以今天讲述Base64,因为它在Web上有着极其广泛的应用,例如web中的URL地址含有非常见语言字符、网页中嵌入的图片,还有电子邮件和传输的附件,可以都先转换为二进制数据,编码为Base64再进行传输,传输完成后还需要进行解码操作。
今天我们介绍的是Lotusscript中的Base64编码和解码处理。
从Notes/Domino 5.0.2开始,LotusScript开始有一个新的类:NotesMIMEEntity,是Notes文档的MIME(多用途因特网邮件扩展)格式,利用该类中的EncodeContent方法可以进行Base64编码,例如我们撰写了一个EncodeBase64函数,专门用来进行Base64编码,如下:
Function EncodeBase64 (StrIn As String) As String
Dim session As New NotesSession
Dim stream As NotesStream
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim body As NotesMIMEEntity
Set stream=session.CreateStream
Call stream.WriteText(StrIn)
Set db=session.CurrentDatabase
Set doc=db.CreateDocument
Set body=doc.CreateMIMEEntity
Call body.SetContentFromText (stream,"text/plain;charset=UTF-8",ENC_NONE)
Call body.EncodeContent (ENC_BASE64)
EncodeBase64= body.ContentAsText
Call stream. Close
Set doc=Nothing
End Function
同样,利用NotesMIMEEntity类中DecodeContent方法可以进行Base64解码,下面是我们撰写的DecodeBase64函数:
Function DecodeBase64 (StrIn As String) As String
Dim session As New NotesSession
Dim stream As NotesStream
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim body As NotesMIMEEntity
Set stream = session.CreateStream
Call stream.WriteText(StrIn)
Set db = session.CurrentDatabase
Set doc = db.CreateDocument
Set body = doc.CreateMIMEEntity
Call body.SetContentFromText(stream, "text/plain;charset=UTF-8", ENC_BASE64)
Call body.DecodeContent()
DecodeBase64 = body.ContentAsText
Call stream.Close
Set doc = Nothing
End Function
注意,在上述两个函数中,为了避免对于汉字进行Base64编码和解码时出现乱码,我们设置了字符为UTF-8格式,如下图:
现在我们可以通过编写一个按钮点击事件的代码,来测试该函数是否能够正常工作,代码如下:
Sub Click(Source As Button)
Dim str1 As String
Dim base64Str As String
Dim decodeBase64Str As String
str1="hello world"
base64Str= EncodeBase64(str1)
Msgbox str1 & "字符base64编码为:" & base64Str
decodeBase64Str= DecodeBase64(base64Str)
Msgbox base64Str & "字符解码为:" & decodeBase64Str
End Sub
效果如下图:
现在我们在Notes客户机中运行一下
紧接着你可以看到Base64编码后的字符还原为文本”你好“,如下图:
当然,你要是不信,也可以使用Internet上的第三方工具来进行测试一下,如下图:
编码前和编码后的字符是不是都一样?
一开始我们就讲过,Base64有着广泛用途,在应用开发中十分重要,例如你在httprequest中请求第三方接口或数据时,需要进行用户名和密码验证,也需要Base64编码一下,如下图:
对附件文件(各种word、excel、pdf等文档)操作来说也十分重要,毕竟都是用代码存取附件都是以二进制Base64后的字符来进行操作的,下一篇你就会看到具体的答案。
今天我们就讲到这里,请继续保持关注。
更多精彩内容,请关注微信公众号:协作者