首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

将Ascii大于127的符号写入文件,为什么读出来的时候是多个字符解决思路

2013-01-25 
将Ascii大于127的符号写入文件,为什么读出来的时候是多个字符我写了如下代码:Open E:\a.txt For Binary

将Ascii大于127的符号写入文件,为什么读出来的时候是多个字符
我写了如下代码:


Open "E:\a.txt" For Binary As #1
    Put #1, , Chr(8634)'先写入文件
Close #1

Open "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扯不上半毛钱关系,到底是为什么呢?
[解决办法]
首先,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 


热点排行