VBMAN.ToolsUtf8 - UTF-8 编解码对象
概述
VBMAN.ToolsUtf8 提供了 UTF-8 编码与 VB 字符串/字节数组之间的转换功能,是处理中文和国际化文本的基础工具。
核心特性
- 编码转换: 字符串与 UTF-8 字节数组互转
- Socket 友好: 直接处理网络传输数据
- 自动 BOM 处理: 自动识别和跳过 UTF-8 BOM
方法
Decode
将 UTF-8 字节数组解码为字符串
vb
Public Function Decode(bytes() As Byte) As String参数:
bytes- UTF-8 编码的字节数组
返回: 解码后的 VB 字符串
示例:
vb
' 从 Socket 接收数据并解码
Dim bytes() As Byte
Client.GetData bytes, vbArray
Dim text As String
text = VBMAN.ToolsUtf8.Decode(bytes)
Debug.Print textEncode
将字符串编码为 UTF-8 字节数组
vb
Public Function Encode(text As String) As Byte()参数:
text- 要编码的字符串
返回: UTF-8 编码的字节数组
示例:
vb
' 将字符串编码后发送
Dim text As String
text = "Hello 世界"
Dim bytes() As Byte
bytes = VBMAN.ToolsUtf8.Encode(text)
Client.SendData bytes综合示例
示例1: Socket 通信编解码(来自 cs-auther 案例)
vb
' 从 Socket 取数据并 UTF-8 解码
Dim json As New cJson
Dim bytes() As Byte
Client.GetData bytes, vbArray
json.Decode VBMAN.ToolsUtf8.Decode(bytes)
' 处理消息...示例2: 文件编码转换
vb
Private Sub ConvertToUtf8(sourcePath As String, destPath As String)
' 读取源文件(假设为 ANSI)
Dim fso As New Scripting.FileSystemObject
Dim ts As TextStream
Set ts = fso.OpenTextFile(sourcePath, ForReading, False, TristateFalse)
Dim content As String
content = ts.ReadAll
ts.Close
' 转换为 UTF-8 并保存
Dim bytes() As Byte
bytes = VBMAN.ToolsUtf8.Encode(content)
' 保存字节数组
Dim fileNum As Integer
fileNum = FreeFile
Open destPath For Binary As #fileNum
Put #fileNum, , bytes
Close #fileNum
End Sub示例3: HTTP 请求内容处理
vb
Private Sub SendHttpPost(url As String, jsonData As String)
' 编码 JSON 数据
Dim postData() As Byte
postData = VBMAN.ToolsUtf8.Encode(jsonData)
' 发送 HTTP 请求
With VBMAN.HttpClient
.Url = url
.Method = "POST"
.ContentType = "application/json; charset=utf-8"
.Body = postData
.Send
End With
End Sub示例4: 控制台输出中文
vb
Private Sub PrintToConsole(message As String)
' 将 Unicode 字符串转为 UTF-8 字节数组
Dim bytes() As Byte
bytes = VBMAN.ToolsUtf8.Encode(message)
' 输出到控制台(需要 API 支持)
' WriteConsole ...
End Sub最佳实践
- 网络通信: Socket 传输中文时统一使用 UTF-8 编码
- 文件交换: 与其他系统交换文件时使用 UTF-8 编码
- Web 交互: HTTP 请求/响应的 Body 通常使用 UTF-8
- 数据库存储: 如果需要存储字节形式的中文,使用 UTF-8