donghai3900
2015-11-29 13:11VB将汉字字符串转换成 UTF-8格式
VB将汉字字符串转换成 UTF-8格式后按照JSON格式提交给服务器,偶数个汉字没有问题,但奇数个汉字时,会有问题,请大师指导。
Private Declare Function MultiByteToWideChar Lib "kernel32 " (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long
Private Declare Function WideCharToMultiByte Lib "kernel32 " (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpDefaultChar As Long, ByVal lpUsedDefaultChar As Long) As Long
Private Const CP_ACP = 0 ' default to ANSI code page
Private Const CP_UTF8 = 65001 ' default to UTF-8 code page
Dim su As String
'字符转 UTF8
Public Function EncodeToBytes(ByVal sData As String) As Byte() ' Note: Len(sData) > 0
Dim aRetn() As Byte
Dim nSize As Long
nSize = WideCharToMultiByte(CP_UTF8, 0, StrPtr(sData), -1, 0, 0, 0, 0) - 1
If nSize = 0 Then Exit Function
ReDim aRetn(0 To nSize - 1) As Byte
WideCharToMultiByte CP_UTF8, 0, StrPtr(sData), -1, VarPtr(aRetn(0)), nSize, 0, 0
EncodeToBytes = aRetn
Erase aRetn
End Function
' UTF8 转字符
Public Function DecodeToBytes(ByVal sData As String) As Byte() ' Note: Len(sData) > 0
Dim aRetn() As Byte
Dim nSize As Long
nSize = MultiByteToWideChar(CP_UTF8, 0, StrPtr(sData), -1, 0, 0) - 1
If nSize = 0 Then Exit Function
ReDim aRetn(0 To 2 * nSize - 1) As Byte
MultiByteToWideChar CP_UTF8, 0, StrPtr(sData), -1, VarPtr(aRetn(0)), nSize
DecodeToBytes = aRetn
Erase aRetn
End Function
Private Sub Command1_Click()
Dim i As Integer
Dim s As String
Dim mBuff() As Byte
Text1 = StrConv(EncodeToBytes("中国人"), vbUnicode) '将utf编码的数组转VB可处理字符
End Sub
Private Sub Command2_Click()
Text1 = DecodeToBytes(StrConv(Text1, vbFromUnicode))
End Sub
- 点赞
- 回答
- 收藏
- 复制链接分享
1条回答
为你推荐
- vb.net 将json还原成datatable-在线等
- visual studio
- 1个回答
- vb 6.0怎么显示空值---显示数据库的空值
- vb6.0
- 1个回答
- 重赏!EXCEL用VB将数值转换成时间格式后,为什么再没办法转回来了
- excel
- vb
- 4个回答
- 如何使用dim语句对一个vb内置的字符串函数定义返回值,定义的格式是什么?
- 1个回答
- vb含有数字的字符串,使用mid函数怎么把其中的数字截取出来
- 2个回答