我写了如下代码:Open "E:\a.txt" For Binary As #1
    Put #1, , Chr(8634)'先写入文件
Close #1Open "E:\a.txt" For Binary As #1
    Dim b(5) As Byte'再重新读出来
    Get #1, , b
    a = StrConv(b, vbFromUnicode)'将字节数组转成字符串
Close #1上面的写入文件那里,我将Chr(8634)写入文件,原本文件是空的。然后立马读出来,却发现最后出来的字符串(赋值给a变量的字符串)是“?!”,其实还有别的,我用记事本打开文件,数了一下是5个符号,包括空格,如下:
  !
所以我就不明白了,Chr函数出来的不应该是一个字符吗?怎么有那么多个,而且这些字符的Ascii码和8634扯不上半毛钱关系,到底是为什么呢?

解决方案 »

  1.   

    首先,chr返回的是一个包含String的Variant
    其次,Put写包含String的Variant值时,会先写入两个字节的描述符(描述Variant包含的是什么类型,String是8),再写入两字节字符串长度,剩下的就是字符串。
    因此写入的字符串(用Variant表示的)总会比实际的多4个字节,与其编码没有丝毫关系。如想写什么,得什么,你应该显示定义String,再写:Open "E:\a.txt" For Binary As #1
    Dim s As String   '显示定义String
    s=Chr(8634)
    Put #1, , s '先写入文件
    Close #1