在VB中如何把UTF-8编码转换为中文?

2025-03-04 16:31:26
推荐回答(5个)
回答1:

可以试下自己写转换的函数,给你点参考资料

转自新帆新闻组:
第一步:用二进制法读入文本数据,赋值给字节型数组,并判断前3个字
节是否UTF-8标记,如果是,才进行以下的处理
第二步:逐个字节判断是否汉字编码,如果是,就再提取后两个数组元
素,共三个数组元素来加以处理
第三步:将这三个数据都转换成16进制数据
第四步:将三个16进制数据都转换成二进制数据
第五步:从第一个二进制数据中去掉前4位,从第二、三个二进制数据
中分别去掉前2位,并将这三个处理后的二进制数据依次连接,成为一
个16位的字串
第六步:从这个二进制串中分别提取前8位和后8位转换成两个10进制
数据,这两个数据就是汉字的Unicode码了,将它们赋值给一个字符型
变量即可

回答2:

无须先转换成UTF-8再转成GB2312

更简单的:

'源串
dim strText as string ="要发往单片机的字符串"

'要输出的字节数组
dim arrbytOut() as byte

'转换
arrbytOut = System.Text.Encoding.GetEncoding("GB2312").GetBytes(strText)

回答3:

具体步骤为:
Public Function GetStringFromUTF8(ByRef data() As Byte) As String
Dim result As String, tmp(1 To 2) As Byte, char As String
For i = LBound(data) To UBound(data)
If data(i) < &H80 Then
result = result & Asc(data(i))
Else
If UBound(data) - i < 2 Then
Exit For
Else
tmp(2) = (data(i) - &HE0) * &H10 + (data(i + 1) - &H80) / 4
tmp(1) = (data(i + 1) Mod 4) * &H40 + (data(i + 2) - &H80)
char = buffer
result = result & char
i = i + 2
End If
End If
Next
GetStringFromUTF8 = result
End Function

回答4:

先把UTF-8编码转成Byte数组,然后
StrConv(bytearr, vbUnicode, &H804)

回答5:

2L是.NET的代码