在我的一个程序当中对一个复杂的文件进行了读写操作后把两个文件的十六进制对照起来看,发现其中前面的文件的有的字符本来是两个字节,结果变成了一个字节,是怎么回事??

解决方案 »

  1.   

    采用 Unicode 格式。'假定 arr() 是一个字节数组
    strTmp = StrConv(arr, vbUnicode)
      

  2.   

    那怎样从文件当中读取unicode格式的数据??
    怎样将该unicode格式的数据存取到数据库当中??
      

  3.   

    一个显示为?的字符在HEX下显示的码为F8 31 ,请问是什么字符,我用VB读后再写就变为了F8,
    用UNICODE转换就变成了F8 00,请问有什么办法可以不失真??
      

  4.   

    有一个文件,我想让一个商用软件去加载它,但是这个软件认识的一个符号的ASCII码是F8 32,但是这样的话它就变为了F8,然后这个软件就不识别了.
      

  5.   

    发现了二进制读写是确实没有问题,但是把该二进制存储到SQLSERVER的ntext字段中的过程当中就出现了问题.
    byte()无法直接存储到该字段当中,但是若把它转换成为String,就失真了,还有用StrConv也失真了,我就没有办法了,
    我觉得这是一类大的问题.希望大家来讨论,谢谢.
      

  6.   

    存储到image 或binary类型字段试试
      

  7.   

    Private Sub CmdSave_Click()
    Dim pByte() As ByteDim str As String
    Dim iStrm As ADODB.Stream
        ComB1.FileName = ""
        ComB1.Filter = "*.txt|*.txt" '前面一个表示显示的滤波,后面一个表示存文件的滤波
        ComB1.DialogTitle = "保存移动测试数据文件"
        ComB1.ShowSave
        ComB1.FileName = App.Path + "/Move.txt"
        If ComB1.FileName = "" Then
            Exit Sub
        End If    Set iStrm = New ADODB.Stream
        With iStrm
            .Type = adTypeBinary
            .Open
            .LoadFromFile ComB1.FileName
        End With
        
        Adodc1.RecordSource = "select * from MOVE_TXT where EMETest_id=36"
        Adodc1.Refresh
        
        Adodc1.Recordset("MOVE_file") = iStrm.Read
        Adodc1.Recordset.Update
        
        Debug.Print pByte
    End Sub
    字段是image,varbinary,ntext,都没有办法执行,说istream.Read为NULL,但是在这句DEBUG下来,执行前里面有值,但是执行错误后里面的值为NULL了,不知道是什么原因.还有在用Stream之前我用的是二进制文件读成pByte,然后放进去也不行.
      

  8.   

    问题已经解决了.谢谢northwolves(狼行天下)