Skip to content

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 text

Encode

将字符串编码为 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

最佳实践

  1. 网络通信: Socket 传输中文时统一使用 UTF-8 编码
  2. 文件交换: 与其他系统交换文件时使用 UTF-8 编码
  3. Web 交互: HTTP 请求/响应的 Body 通常使用 UTF-8
  4. 数据库存储: 如果需要存储字节形式的中文,使用 UTF-8

VB6及其LOGO版权为微软公司所有