vb 字符串由ansi转 utf8代码
如题 --------------------编程问答-------------------- 没人跟帖? 分要是不够在加 --------------------编程问答-------------------- http://topic.csdn.net/u/20100306/20/03450634-dcd6-4982-947e-a225a262745f.html --------------------编程问答-------------------- http://topic.csdn.net/u/20100306/20/03450634-dcd6-4982-947e-a225a262745f.html --------------------编程问答-------------------- 这里面有现成的函数http://blog.csdn.net/SupermanKing/archive/2010/11/05/5989227.aspx --------------------编程问答--------------------
这个问题不是没解决吗 --------------------编程问答--------------------
没看懂 --------------------编程问答-------------------- 弄错了,上面是转回来的,这个才是
http://blog.csdn.net/SupermanKing/archive/2008/10/16/3082860.aspx --------------------编程问答-------------------- 不过 http://blog.csdn.net/SupermanKing/archive/2010/11/05/5989227.aspx 的
UTF8ToUnicode 函数是很值得你参考的,是整个UTF-8解码过程,没有用API,如果把过程逆
向还可做出编码过程。
--------------------编程问答-------------------- http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html --------------------编程问答-------------------- 来个狠点地
http://www.baidu.com/s?tn=iewz_dg&ch=2&bs=ansi+%D7%AA+utf8+dim&f=8&wd=ansi+%D7%AA+utf8+dim --------------------编程问答--------------------
UTF-8在VB中是以字符串的形式显示的...字符串是2位而UTF是3位...所以必定产生乱码...在此最好的解决办法就是用本函数啦~--------------------编程问答--------------------
Option Explicit
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()
Dim s As String
s = StrConv(EncodeToBytes("aa中文aa"), vbUnicode)
MsgBox s
s = DecodeToBytes(StrConv(s, vbFromUnicode))
MsgBox s
End Sub
我要是能百度到 还来这问吗 --------------------编程问答-------------------- 这不帮你找了么
上面的代码试过了?
--------------------编程问答--------------------
你的问题在网上早就有资料了,百度一定能找到,只是用不用心,想不想找的个人问题。
像这种问题,即使CSDN也回答过不知多少贴,你都不去搜索一下就问了,别人给你连接
也是当然的。 --------------------编程问答--------------------
楼主太监了不等于方法没用。 --------------------编程问答-------------------- 融汇贯通才是最重要的 --------------------编程问答--------------------
补充:VB , 基础类