VB StrConv函数乱码的问题!

PrivateSubCommand1_Click()MsgBoxStrConv("金创药",vbUnicode)MsgBoxStrConv(StrConv("金创药",v... Private Sub Command1_Click()
MsgBox StrConv("金创药", vbUnicode)
MsgBox StrConv(StrConv("金创药", vbUnicode), vbFromUnicode)
End Sub
第一个出现乱码,第二个出现 "金创。"这是为什么?
我想知道怎样才能得到金创药的UNICODE!
直接告诉我得到UNICODE的其他方法也行!(能互转)
那我知道金创药的UNICODE是 D1 91 1B 52 6F 83
我该如何用msgbox这条命令让他显示金创药?
展开
 我来答
果建翼
推荐于2016-04-16 · TA获得超过7923个赞
知道大有可为答主
回答量:1684
采纳率:0%
帮助的人:2425万
展开全部
正如楼上所说,VB本身就是Unicode,如果你知道了Unicode的字节码,可以直接用它来构造VB的字符串。
举例:
Dim B1(0 to 5) As Byte
'下面你就把这个字节数组填充为你要转换的Unicode码:D1 91 1B 52 6F 83
B1(0) = &HD1
B1(1) = &H91
B1(2) = &H1B
B1(3) = &H52
B1(4) = &H6F
B1(5) = &H83
Dim Str1 as String
Str1 = B1 '直接将字节数组赋值给字符串
Msgbox Str1 '弹出对话框显示“金创药”
zzyyxxaabbcc
2010-03-24 · TA获得超过3641个赞
知道大有可为答主
回答量:3542
采纳率:50%
帮助的人:3197万
展开全部
记住,在VB里,汉字是作为Unicode字符来处理的.
所以MsgBox StrConv("金创药", vbUnicode)这句是不正确的,应该用StrConv("金创药", vbFromUnicode)这种方式把汉字转换为非Unicode字符。

同理,第二句应该改为
MsgBox StrConv(StrConv("金创药", vbFromUnicode), vbUnicode)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
strenyong
2010-03-24 · TA获得超过3174个赞
知道大有可为答主
回答量:4481
采纳率:0%
帮助的人:3434万
展开全部
vb里的汉字本来就是按unicode来处理的
转字符串
Public Function Decode(strDecode As String) As String
Dim i As Long
Dim strCode '存储转换后的编码
Dim chrTmp

On Error GoTo ErrProc

If Len(strDecode) Mod 4 <> 0 Then GoTo ErrProc
For i = 1 To Len(strDecode) Step 4
strCode = Mid(strDecode, i, 4)
chrTmp = Mid(strCode, 1, 2)
strCode = Mid(strCode, 3, 2) & chrTmp
chrTmp = ChrW("&H" & strCode)
If chrTmp = "?" Then If strCode <> "003F" Then GoTo ErrProc
Decode = Decode & chrTmp
Next

Exit Function
ErrProc:

End Function

转unicode
Public Function Encode(strEncode As String) As String
Dim i As Long
Dim chrTmp
Dim ByteLower, ByteUpper
Dim strReturn '存储转换后的编码

For i = 1 To Len(strEncode)
chrTmp = Mid(strEncode, i, 1)
ByteUpper = Hex(AscB(MidB(chrTmp, 1, 1)))
If Len(ByteUpper) = 1 Then ByteUpper = "0" & ByteUpper
ByteLower = Hex(AscB(MidB(chrTmp, 2, 1)))
If Len(ByteLower) = 1 Then ByteLower = "0" & ByteLower
strReturn = strReturn & ByteUpper & ByteLower
Next

Encode = strReturn
End Function
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jiahuastudio
2010-03-24 · 超过36用户采纳过TA的回答
知道答主
回答量:74
采纳率:0%
帮助的人:0
展开全部
MsgBox "金创药"

就可以显示出“金创药”了,还需要转换吗,VB自动进行UNICODE转换的,一般不需要人工干预。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式