VB中Unicode转UTF8

本来自己从来没用到过,小黑写FLASH音乐播放器时讨论到VB向FLASH发送歌曲名时显示成乱码,不管是ANSCII还是UNICODE发过去,FLASH上老是乱码,看来数据类型不对,当时猜想既然几种类型都失败,可能是字节型吧,找度娘问了下,VBGOOD上的大佬给出了代码,整理了:

ASP/Visual Basic代码
  1. Private Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As LongByVal dwFlags As LongByVal lpWideCharStr As LongByVal cchWideChar As LongByRef lpMultiByteStr As Any, ByVal cchMultiByte As LongByVal lpDefaultChar As StringByVal lpUsedDefaultChar As LongAs Long  
  2. Private Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As LongByVal dwFlags As LongByVal lpMultiByteStr As LongByVal cchMultiByte As LongByVal lpWideCharStr As LongByVal cchWideChar As LongAs Long  
  3. Private Const CP_UTF8 = 65001   
  4. Function Utf8ToUnicode(ByRef Utf() As ByteAs String  
  5.     Dim lRet As Long  
  6.     Dim lLength As Long  
  7.     Dim lBufferSize As Long  
  8.     lLength = UBound(Utf) - LBound(Utf) + 1   
  9.     If lLength <= 0 Then Exit Function  
  10.     lBufferSize = lLength * 2   
  11.     Utf8ToUnicode = String$(lBufferSize, Chr(0))   
  12.     lRet = MultiByteToWideChar(CP_UTF8, 0, VarPtr(Utf(LBound(Utf))), lLength, StrPtr(Utf8ToUnicode), lBufferSize)   
  13.     If lRet <> 0 Then  
  14.         Utf8ToUnicode = Left(Utf8ToUnicode, lRet)   
  15.     End If  
  16. End Function  
  17. Function UnicodeToUtf8(ByVal UCS As StringAs Byte()   
  18.     Dim lLength As Long  
  19.     Dim lBufferSize As Long  
  20.     Dim lResult As Long  
  21.     Dim abUTF8() As Byte  
  22.     lLength = Len(UCS)   
  23.     If lLength = 0 Then Exit Function  
  24.     lBufferSize = lLength * 3 + 1   
  25.     ReDim abUTF8(lBufferSize - 1)   
  26.     lResult = WideCharToMultiByte(CP_UTF8, 0, StrPtr(UCS), lLength, abUTF8(0), lBufferSize, vbNullString, 0)   
  27.     If lResult <> 0 Then  
  28.     lResult = lResult - 1   
  29.     ReDim Preserve abUTF8(lResult)   
  30.     UnicodeToUtf8 = abUTF8   
  31.     End If  
  32. End Function  
  33. Private Sub Command1_Click()   
  34.     Dim byt() As Byte  
  35.     byt = UnicodeToUtf8("测试")   
  36.     Debug.Print Hex(byt(0)) & Hex(byt(1)) & Hex(byt(2))   
  37.     Debug.Print Utf8ToUnicode(byt())       
  38. End Sub  

原贴地址:http://www.vbgood.com/thread-65329-1-1.html



上一篇: VB 窗体实现文件拖拽获取路径方法
下一篇: VB关于webbrowser相关操作大全
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: vb
相关日志:
评论: 0 | 引用: 0 | 查看次数: 2774
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭

 广告位

↑返回顶部↑