小问题,钻牛角尖了,求解!~

vbyiger1989 2010-07-02 01:37:22
print len(strconv("我是中国人",vbUnicode))
这句话的输出值是8,求解为啥会是这样,最好能详细解读一下语句。
那位好心的帮个忙吧!另外相对应的lenb(strconv("",vbformunicode))的值返回能理解!
...全文
48 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
a1875566250 2010-07-02
  • 打赏
  • 举报
回复
同杨过的说法,已经是了,不要再转了。
赵4老师 2010-07-02
  • 打赏
  • 举报
回复
debug.print lenB(strconv("我是中国人",vbFromUnicode))
'输出 10,表示转换为GBK码字符串后字节数为10
yangxie5201314 2010-07-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bcrun 的回复:]

楼主你的写法本身就是错的,像"我是中国人"这样一个字符串常量,在VB6中本身就是UNICODE编码的,你却把他当成默认的编码(简体中文windows中一般是gbk)那样想去再转成unicode,那肯定乱七八糟了.要转换也是如下面这样,用vbFromUnicode转成默认的GBK编码,赋值给动态字节数组b,这时b里储存的10个字节就是对应的GBK编码了.而代码中s1也是unicode的字符串,严格……
[/Quote]
就是字符集问题
bcrun 2010-07-02
  • 打赏
  • 举报
回复
楼主你的写法本身就是错的,像"我是中国人"这样一个字符串常量,在VB6中本身就是UNICODE编码的,你却把他当成默认的编码(简体中文windows中一般是gbk)那样想去再转成unicode,那肯定乱七八糟了.要转换也是如下面这样,用vbFromUnicode转成默认的GBK编码,赋值给动态字节数组b,这时b里储存的10个字节就是对应的GBK编码了.而代码中s1也是unicode的字符串,严格说来赋值给它也是不合适的.虽然在此处,他也是像s1那样存储的10个字节的对应GBK的编码.但因为VB6的String本来就是按unicode处理字符串的,虽说能赋值过去,也是不易正确处理的.

Private Sub Form_Load()
Dim s1 As String, b() As Byte
b = StrConv("我是中国人", vbFromUnicode)
s1 = StrConv("我是中国人", vbFromUnicode)
End Sub

至于lenb(strconv("",vbformunicode)),当然结果是0了

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧