在VB中将一字符串转存到Byte数组里的正确方法

我们知道VB采用的Unicode的编码方式,在对外接口的时候就会出现一些问题,如调用API函数时或是和其它程序发送数据时就需要特别注意,因为它们不一定也是采用这样的编码方式,所以要将其转换,存储到一个Byte的数组里面,然后传递过去,才能得到正确的结果,否则一旦传递了非英文的可打印字符时,程序将不会出现你想要的结果。我在编写一个网页时就遇到这样的问题,当中文数据被Post到一个网页时(Webbrowser控件),显示了乱码。我从网上查找资料,发现了这个问题的原因所在,也找到了转换函数PackBytes(),结果却发现这个函数有问题,现将其改正如下。
第一种方法是逐字转换,因为中文汉字的编码为GB2312,需要对其进行特别处理   
Private Sub PackBytes(ByteArray() As Byte, ByVal PostData As String)
        Dim iNewBytes As Long     '数组预设长度
        Dim intAscii As Integer     '一个字符(Unicode)的Asc编码,中文字符时其值小于0   
        Dim mCurNo As Integer    '当前操作的Byte数组下标
        Dim CharHex As String    '当前操作字符的十六进制字符串
        mCurNo = 0   
        iNewBytes = LenB(PostData) - 1     '字符串长度Len(str)的两倍注意用的是LenB()函数,数组下标从0开始,要减去1
        If iNewBytes < 0 Then       
          Exi
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值