[VB] VB6.0 中文 与 UTF-8 互相转换

[复制链接]
梅雷工具箱发表于 2015-6-25 13:05:00 | 显示全部楼层 |阅读模式


VB6.0 中文 与 UTF-8 互相转换


=======================================================================================================================

Private Const CP_ACP = 0        ' default to ANSI code page

Private Const CP_UTF8 = 65001   ' default to UTF-8 code page

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 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)
     ReDim aRetn(0 To nSize - 1) As Byte
     WideCharToMultiByte CP_UTF8, 0, StrPtr(sData), -1, VarPtr(aRetn(0)), nSize, 0, 0
     
     EncodeToBytes = aRetn
End Function


Private 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)
     ReDim aRetn(0 To 2 * nSize - 1) As Byte
     MultiByteToWideChar CP_UTF8, 0, StrPtr(sData), -1, VarPtr(aRetn(0)), nSize
     
     DecodeToBytes = aRetn
End Function

Private Sub Command1_Click()

'遇到错误,直接执行下一行。
On Error Resume Next

     Dim s As String
     Text1 = StrConv(EncodeToBytes(Text1), vbUnicode) '中文 转 UTF-8

     Text2 = DecodeToBytes(StrConv(Text2, vbFromUnicode)) ' UTF-8 转 中文
  
End Sub

   


_____________________________________________________________________________ _

中磊UG二次开发教程 梅雷著 qq1821117007
学UG就上UG网 http://www.9sug.com/
就上UG网淘宝直营店
您需要登录后才可以回帖 登录 | 注册UG网 用百度帐号登录

本版积分规则