vbscript中的过程调用或参数无效

时间:2009-06-30 09:23:51

标签: asp-classic

我正在使用vb脚本将文件上传到服务器。我遇到的问题是当我将文件设置为ASCII格式时......

Set oFile = oFS.CreateTextFile(sPath & FileName, True, False)

当调用sub表示

时,我收到错误
  

无效的过程调用或参数

但如果我将文件设置为unicode

Set oFile = oFS.CreateTextFile(sPath & FileName, True, True)

它上传成功但由于编码错误而无法打开。 产生错误的行是这个,如果格式是ASCII就是这个

oFile.Write BinaryToString(FileData)

其中oFile是我在上面创建的ASCII文件

以下是产生错误的源代码。这是我上网的上传功能..

Public Sub SaveToDisk(sPath)
        Dim oFS, oFile
        Dim nIndex

        If sPath = "" Or FileName = "" Then Exit Sub
        If Mid(sPath, Len(sPath)) <> "\" Then sPath = sPath & "\"

        Set oFS = Server.CreateObject("Scripting.FileSystemObject")
        If Not oFS.FolderExists(sPath) Then Exit Sub

        Set oFile = oFS.CreateTextFile(sPath & FileName, True, False)
        oFile.Write BinaryToString(FileData)

        oFile.Close
    End Sub

    Function BinaryToString(Binary)
        'Antonin Foller, http://www.motobit.com
        'Optimized version of a simple BinaryToString algorithm.

        Dim cl1, cl2, cl3, pl1, pl2, pl3
        Dim L
        cl1 = 1
        cl2 = 1
        cl3 = 1
        L = LenB(Binary)

        Do While cl1<=L
            pl3 = pl3 & Chr(AscB(MidB(Binary,cl1,1)))
            cl1 = cl1 + 1
            cl3 = cl3 + 1
            If cl3>300 Then
                pl2 = pl2 & pl3
                pl3 = ""
                cl3 = 1
                cl2 = cl2 + 1
                If cl2>200 Then
                    pl1 = pl1 & pl2
                    pl2 = ""
                    cl2 = 1
                End If
            End If
        Loop
        BinaryToString = pl1 & pl2 & pl3
    End Function

可能是服务器上的配置吗?如果这有任何意义请帮助..

2 个答案:

答案 0 :(得分:2)

我怀疑BinaryToString不仅返回ASCII(实际上是当前的OEM代码页)字符,还返回unicode范围内OEM代码页集之外的其他字符。

BinaryToString究竟做了什么?

答案 1 :(得分:-1)

经过一段不合理的长时间处理同样的问题,没有真正对我有意义,与Unicode无关,我终于得到了它与之合作:

Set oFile = oFS.CreateTextFile(sPath & FileName, 8)

这个页面对我很有用: http://ns7.webmasters.com/caspdoc/html/vbscript_filesystemobject_object_opentextfile_method.htm

Ilya Evdokimov