我怎么感觉LenB()获得的字节怎么和 winsock里接受的  bytetotal怎么不一样的啊?
怎么才可以一样啊?谢谢

解决方案 »

  1.   

    lenb要用strconv转换一下的,比如lenb(strconv("a 什",vbfromunicode))
      

  2.   

    Windows 操作系统的网络传输中,对字符串是采用 ANSI 编码,即西文字符占用 1 字节,东方字符(包括汉字)占用 2 字节。
    但在较新版本的操作系统内部传递中,字符串被缺省转换为 UniCode 编码,即所有字符都占用 2 字节,西文字符首字节补 0。因此,如一楼所述,如果你需要得到 ANSI 编码长度,需要调用代用 vbFromUniCode 参数的 StrConv 函数。
      

  3.   

    用一楼的转换吧!LenB这个函数有点奇怪,如果你的字符串全为1个字节的字符组成或者全为2个字节的字符组成的话,这个函数返回没错!
    但是如果是混合组成,即一个字符是1个字节、另一个字符是2个字节……的话,这个函数就返回错误的数值了。