中文unicode的数据类型转换在VB6中输出为63(问号)

时间:2017-05-16 13:38:31

标签: vba unicode vb6 unicode-string chinese-locale

我是VB6的新手,我想将参数从Double转换为Hex以获得中文Unicode值。这里的问题是输入值为1-127,输出是相同的。对于超过127的值,输出为63(视为?)。该参数长度为4个字节。

尽管使用了 ChrW ,但仍会发生这种情况。我的计算机已在“系统区域设置”下设置为“简体中文”。有办法克服这个问题吗?

Dim sHex As String
Dim sTmp As String
Dim n As Integer
Dim m As Integer
Dim sRet As String
Dim nByteCountMerk As Integer

Public Function ConvDoubleToHexString(dVal As Double, ByVal nByteCount As Integer) As String

m = 1
sHex = Hex(dVal)

nByteCountMerk = nByteCount
If nByteCount < Len(sHex) / 2 Then nByteCount = Len(sHex) / 2
If nByteCount < 1 Then nByteCount = 1

sHex = String(nByteCount * 2 - Len(sHex), "0") & sHex 
For n = 0 To nByteCount - 1
    sTmp = ChrW(Val("&H" & Mid(sHex, m, 2)))
    m = m + 2
    sRet = sRet & sTmp
next n
End Function

1 个答案:

答案 0 :(得分:-1)

您必须在控制面板中更改“非Unicode程序的语言”。

我已经写了一些关于这个问题的注释here。这些笔记很旧,有来自Windows XP的屏幕截图,但我很确定相同的设置仍然存在。

问题是VB6仅部分基于Unicode。在内部,所有字符串都是Unicode,但是控件和菜单中的内置不是。