🕖上午好,题主!目前:🟢[在线]
📢参考通义千问、由郭老师整理提供!
📣今日诗号:何须剑道争锋?千人指,万人封;可问江湖顶峰,三尺秋水尘不染,天下无双。
解决 VBA-JSON 中文乱码问题
你遇到的问题是 VBA 读取包含中文的 JSON 文件时出现乱码或报错。这是因为 VBA 默认使用 GBK 编码,而你的 JSON 文件可能使用的是 UTF-8 编码。
以下是几种解决方法,以及完整的代码示例:
方法一: 使用 ADODB.Stream 进行编码转换 (推荐)
Sub test()
Dim FSO As New FileSystemObject
Dim JsonText As String
Dim parsed As Dictionary
' 使用 ADODB.Stream 读取文件并进行编码转换
With CreateObject("ADODB.Stream")
.Charset = "UTF-8" ' 设置字符集为 UTF-8
.Open
.LoadFromFile "C:\Users\57630\Desktop\JSON.json"
JsonText = .ReadText
.Close
End With
Set JSON = JsonConverter.ParseJson(JsonText)
Debug.Print JSON("writer")
End Sub
方法二: 修改 VBA-JSON 源码
-
打开 VBA-JSON 项目中的 JsonConverter.cls 文件。
-
找到 ParseJson 函数。
-
在函数内部开头添加以下代码:
' 将 JSON 字符串转换为 UTF-8 编码
JsonString = StrConv(JsonString, vbUnicode)
JsonString = StrConv(JsonString, vbFromUnicode)
-
保存修改后的 JsonConverter.cls 文件。
方法三: 将 JSON 文件另存为 GBK 编码 (不推荐)
-
使用文本编辑器打开 JSON 文件。
-
将文件编码另存为 GBK。
-
使用 VBA 读取修改后的文件。
注意:
- 方法一是最推荐的解决方案,因为它不需要修改 VBA-JSON 源码,并且可以处理各种编码格式。
- 方法二需要修改 VBA-JSON 源码,可能会影响其他使用该库的代码。
- 方法三不推荐使用,因为它可能会导致数据丢失或其他问题。
完整代码示例 (使用方法一):
Sub test()
Dim FSO As New FileSystemObject
Dim JsonText As String
Dim parsed As Dictionary
' 使用 ADODB.Stream 读取文件并进行编码转换
With CreateObject("ADODB.Stream")
.Charset = "UTF-8" ' 设置字符集为 UTF-8
.Open
.LoadFromFile "C:\Users\57630\Desktop\JSON.json"
JsonText = .ReadText
.Close
End With
Set JSON = JsonConverter.ParseJson(JsonText)
Debug.Print JSON("writer")
End Sub
希望以上解决方案可以帮助你解决问题!