You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 16:54:03