Character encoding 为什么VBScript会说;无效字符“;使用ExecuteGlobal导入.vbs函数库文件时?

Character encoding 为什么VBScript会说;无效字符“;使用ExecuteGlobal导入.vbs函数库文件时?,character-encoding,vbscript,import,importerror,invalid-characters,Character Encoding,Vbscript,Import,Importerror,Invalid Characters,我在VBscript中遇到“无效字符”错误!特别是,在这段代码中: '******************************************************************* 'Import Code 'by Cheyne Wallace 'November 2008 'When using only VBscript (not QTP), this code will import any function library passed into it. 'Co

我在VBscript中遇到“无效字符”错误!特别是,在这段代码中:

'*******************************************************************
'Import Code
'by Cheyne Wallace
'November 2008

'When using only VBscript (not QTP), this code will import any function library passed into it.
'Copy this function into a file, then use it to bring in various other function libraries.
'Usage:
'   Import "Library.vbs"

Sub Import(strFile)
    Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")
    Dim wss : Set wss = CreateObject("WScript.Shell")
    strFile = wss.ExpandEnvironmentStrings(strFile)
    strFile = objFSO.GetAbsolutePathName(strFile)
    Set objFile = objFSO.OpenTextFile(strFile, 1)
    ExecuteGlobal objFile.ReadAll
    objFile.Close : Set objFSO = nothing
    Set wss = Nothing
End Sub
错误在第206行的字符2上声明“
Microsoft VBScript编译错误。无效字符。代码:800A0408
”,这是
ExecuteGlobal objFile.ReadAll
(字符1是一个选项卡)


我已经键入并重新键入了该行,以及周围的换行符。不过,它一直在说“无效字符”。发生了什么事?

事实证明,问题不在于
ExecuteGlobal
,而在于我试图导入的.vbs文件。我导入的文件不是ANSI编码。如果VBScript对您导入的文件有问题,它将在
ExecuteGlobal
开头的字符和行报告错误(这无疑会导致混淆)


打开您试图导入的文件,将其转换为ANSI,所有操作都应正常进行。

FYI对于将来出现相同问题的用户,要解决此问题,请执行以下操作:

  • 在记事本中打开.vbs
  • 转到文件并“另存为”
  • 在文件名框的正下方,您将看到用于编码的下拉菜单。选择ANSI

  • 从以下位置更改代码:

    Set objFile = objFSO.OpenTextFile(strFile, 1)
    ExecuteGlobal objFile.ReadAll
    

    OpenTextFile
    函数中的最后一个参数是
    TristateUseDefault=-2
    (使用系统默认值打开文件)

    Set objFile = objFSO.OpenTextFile(strFile, 1, False, -2)
    ExecuteGlobal objFile.ReadAll