报错:ActiveX component can‘条create object :’system .Text.encoding‘
时间: 2024-01-19 19:05:15 浏览: 207
这个错误通常是由于缺少相关的组件或对象库引起的。在VBScript中,`System.Text.Encoding`是不可直接创建对象的。为了解决这个问题,可以使用`ScriptControl`对象来进行Base64编码。以下是修改后的代码示例:
```vbscript
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile("input.txt", True)
strText = "这是要保存的字符串内容"
objFile.Write strText
objFile.Close
Set objShell = CreateObject("Shell.Application")
Set sourceFolder = objShell.NameSpace(".")
Set compressedFile = sourceFolder.Items.Item("input.txt")
zipPath = "compressed.zip"
objShell.NameSpace(zipPath).CopyHere compressedFile
Set objStream = CreateObject("ADODB.Stream")
objStream.Type = 1 ' Binary
objStream.Open
objStream.LoadFromFile zipPath
base64String = objStream.Read( -1 )
objStream.Close
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.DeleteFile zipPath
Set scriptControl = CreateObject("MSScriptControl.ScriptControl")
scriptControl.Language = "JScript"
base64String = scriptControl.Eval("(function(){var base64EncodeChars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';var out='',i=0,len=base64String.length;while(i<len){var c1,c2,c3,enc1,enc2,enc3,enc4;c1=base64String.charCodeAt(i++);c2=base64String.charCodeAt(i++);c3=base64String.charCodeAt(i++);enc1=c1>>2;enc2=((c1&3)<<4)|(c2>>4);enc3=((c2&15)<<2)|(c3>>6);enc4=c3&63;if(isNaN(c2)){enc3=enc4=64;}else if(isNaN(c3)){enc4=64;}out=out+base64EncodeChars.charAt(enc1)+base64EncodeChars.charAt(enc2)+base64EncodeChars.charAt(enc3)+base64EncodeChars.charAt(enc4);}return out;})()")
WScript.Echo base64String
```
这段修正后的代码使用了`MSScriptControl.ScriptControl`对象来执行JScript代码进行Base64编码。它将字符串保存到txt文件中,将txt文件压缩为zip文件,然后将zip文件内容转换为Base64字符串并输出。
请确保在运行VBScript之前已经安装了相应的运行环境,如Windows操作系统。
希望这次能够解决问题!
阅读全文