• Lotusscript中的Base64处理


    大家好,才是真的好。

    不懂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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    同样,利用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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    注意,在上述两个函数中,为了避免对于汉字进行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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    效果如下图:
    在这里插入图片描述
    现在我们在Notes客户机中运行一下
    在这里插入图片描述
    紧接着你可以看到Base64编码后的字符还原为文本”你好“,如下图:
    在这里插入图片描述
    当然,你要是不信,也可以使用Internet上的第三方工具来进行测试一下,如下图:
    在这里插入图片描述
    编码前和编码后的字符是不是都一样?

    一开始我们就讲过,Base64有着广泛用途,在应用开发中十分重要,例如你在httprequest中请求第三方接口或数据时,需要进行用户名和密码验证,也需要Base64编码一下,如下图:
    在这里插入图片描述
    对附件文件(各种word、excel、pdf等文档)操作来说也十分重要,毕竟都是用代码存取附件都是以二进制Base64后的字符来进行操作的,下一篇你就会看到具体的答案。

    今天我们就讲到这里,请继续保持关注。

    更多精彩内容,请关注微信公众号:协作者

  • 相关阅读:
    微服务真的过时了吗?Twitter员工因为微服务被马斯克解雇了
    指定显卡运行python脚本
    基于双参数蜜蜂算法解决车辆路径问题(Matlab代码实现)
    Node.js精进(4)——事件触发器
    Vue中使组件置顶后悬浮
    爬虫实践-豆瓣读书Top250
    什么是好代码/坏代码?给普通人的图解示例
    Facebook广告投放经常被问的几个问题
    分层架构在数据仓库的应用
    Hadoop3教程(十七):MapReduce之ReduceJoin案例分析
  • 原文地址:https://blog.csdn.net/XZZ_2018/article/details/125525148