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

如何用VBA实现CJK字符的UTF-8格式转换?附Python示例

在VBA中实现CJK字符转UTF-8编码(与Python结果一致)

要在VBA中实现和Python相同的UTF-8编码转换,你可以借助ADODB.Stream对象处理字节流,再将字节转换为Python风格的十六进制表示格式。以下是完整实现代码:

Function GetUTF8Hex(ByVal inputStr As String) As String
    Dim stream As Object
    Dim byteArr() As Byte
    Dim hexStr As String
    Dim i As Integer
    
    ' 创建并配置流对象
    Set stream = CreateObject("ADODB.Stream")
    stream.Charset = "UTF-8"
    stream.Open
    stream.WriteText inputStr
    stream.Position = 0
    stream.Type = 1 ' 切换为二进制模式读取字节
    byteArr = stream.Read
    stream.Close
    Set stream = Nothing
    
    ' 将字节数组转换为Python风格的\xXX格式
    hexStr = "b'"
    For i = LBound(byteArr) To UBound(byteArr)
        hexStr = hexStr & "\x" & Right("00" & Hex(byteArr(i)), 2)
    Next i
    hexStr = hexStr & "'"
    
    GetUTF8Hex = hexStr
End Function

' 测试转换效果
Sub TestUTF8Conversion()
    Dim result As String
    result = GetUTF8Hex("你")
    Debug.Print result ' 输出:b'\xE4\xBD\xA0'
End Sub

代码说明:

  • ADODB.Stream核心作用:VBA默认字符串是Unicode编码,通过设置Charset = "UTF-8",可以将字符串编码为UTF-8字节流,再切换到二进制模式读取得到对应字节数组。
  • 格式匹配处理:遍历字节数组,将每个字节转为两位十六进制字符串,拼接成Python的\xXX格式,最后加上b'和'来完全匹配Python的输出样式。
  • 验证方式:运行TestUTF8Conversion过程,打开VBA立即窗口(Ctrl+G)即可看到与Python一致的输出结果。

额外提示:

  • 无需额外引用库,Office默认环境支持ADODB.Stream对象。
  • 若只需纯十六进制编码(不带b'包裹),修改拼接逻辑去掉首尾的b'和'即可。

内容的提问来源于stack exchange,提问作者showkey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 08:02:04