VBA EncodeBase64编码每55个字符插入换行符问题求助
问题原因
你使用的MSXML2.DOMDocument组件提供的bin.base64类型编码能力,默认遵循MIME编码规范,输出的Base64字符串每满76个字符就会自动插入CRLF换行符。
你观察到的「原字符串长度达到55就触发换行」是编码对应规则导致的:单字节字符(ASCII范围内的字符)的Base64编码遵循每3个原字节转换为4个编码字符的规则,55个单字节原字符的编码结果刚好为76个编码字符,刚好触及换行阈值,因此会出现你测试到的规律。
解决方案
直接移除编码结果中的所有换行符即可,修改EncodeBase64函数的返回逻辑:
Function EncodeBase64(text As String) As String Dim arrData() As Byte arrData = StrConv(text, vbFromUnicode) Dim objXML As MSXML2.DOMDocument60 Dim objNode As MSXML2.IXMLDOMElement Set objXML = New MSXML2.DOMDocument60 Set objNode = objXML.createElement("b64") objNode.DataType = "bin.base64" objNode.nodeTypedValue = arrData ' 移除所有自动插入的换行符 EncodeBase64 = Replace(objNode.text, vbCrLf, "") Set objNode = Nothing Set objXML = Nothing End Function
修改后重新运行测试代码,输出的Base64编码就不会包含额外的换行符。
内容的提问来源于stack exchange,提问作者Tim McNaughton
相关产品推荐
相关产品推荐

