l = lenB(StrConv(text1.Text, vbFromUnicode)) 这就是实际长度。
本帖最后由 bcrun 于 2012-04-07 08:37:03 编辑
UnicodeToUtf8() 内部不是已经有长度了,将它作为参数传出去。
大哥,长度就是lResult嘛?怎么传出去呢?在模块里定义一个全局的变量,每次调用UnicodeToUtf8()都给这个全局变量赋值?还是说应该修改这个函数UnicodeToUtf8(ByVal UCS As String),变成UnicodeToUtf8(ByVal UCS As String,ByVal Len As Interger), 加一个传入参数,如果lResult不够就补充空格?不好意思啊,我很菜。。雷倒各位高手了。。罪过啊罪过
dim arrBuf as byte() arrBuf = UnicodeToUtf8("XXXXX")然后 Len(arrBuf) ,不就是转换后的长度?
U+0000 ~ U+007F -> 1字节
U+0080 ~ U+07FF -> 2字节
U+0800 ~ U+FFFF -> 3字节其实你可以变更一下处理次序:
先将字段值转 UTF-8,然后再用空格补齐长度,这样就省去单独计算长度的操作了。
这就是实际长度。
arrBuf = UnicodeToUtf8("XXXXX")然后 Len(arrBuf) ,不就是转换后的长度?
把原来计算长度的函数改成下面的就okay啦,改动超小。谢谢上面各位高手的帮助~!
lResult = WideCharToMultiByte(CP_UTF8, 0, StrPtr(UCS), lLength, abUTF8(0), lBufferSize, vbNullString
Len(arrBuf)不对,测试arrBuf = UnicodeToUtf8("text1"),Len(arrBuf)=2..