预览模式: 普通 | 列表

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

Tags: vb

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 2774

VB 窗体实现文件拖拽获取路径方法

 VB 窗体实现文件拖拽,只需要将窗体的OLEDropMode 属性设置为1即可。同样在ListBox、TreeView、ListView……等控件都提供这个属性设置的。然后通过OLEDragDrop事件来获取拖放的文件路径即可。

ASP/Visual Basic代码
  1. Private Sub Form_Load()  
  2.     Form1.OLEDropMode = 1  
  3. End Sub  
  4.   
  5. Private Sub Form_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)  
  6.     For i = 1 To Data.Files.Count '逐个读取文件路径  
  7.         Debug.Print Data.Files(i)  
  8.     Next  
  9. End Sub  

Tags: vb

分类:技术文章 | 固定链接 | 评论: 1 | 引用: 0 | 查看次数: 2570

完全转换UTF-8为GB2312的PHP函数

  开始是用“$re=iconv("UTF-8","GB2312",$snoopy->results);”将utf8转换成gb2312,结果经常出错,到了一半就看不到后文了。后来用“$re=iconv("UTF-8","GB2312//IGNORE",$snoopy->results);”,加上了忽略错误,好了点,可以转换到底了!可是今天又发现,还是有部分网页无法转换。后来仔细研究发现原来iconv只能转换3字符的utf8码,如果需要全码转换需要另外写函数。

  首先需要了解utf8的构成。

  基础:

  1、单独使用iconv函数只能转换GB2312字符,外文字符无法转换。

查看更多...

Tags: php

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 2137

 广告位

↑返回顶部↑