如何用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
相关产品推荐
相关产品推荐

