如何在JScript中解码Base64字符串

时间:2018-12-07 16:01:22

标签: string base64 jscript

我必须在JScript中解码Base64字符串,并且我已经尝试使用此代码来执行有针对性的操作:

var xmlDom = new ActiveXObject("Microsoft.XMLDOM");
var el = xmlDom.createElement("tmp");
el.dataType = "bin.Base64"
el.text = "aGVsbG8gd29ybGQ=";
WScript.Echo(el.nodeTypedValue);

但是,不幸的是,它不起作用。它应该显示消息Hello world,但返回消息是一堆汉字。这是一个屏幕作为证明

enter image description here

而且,还有另一种方法来解码Base64编码的字符串吗?

1 个答案:

答案 0 :(得分:1)

您必须执行一些其他步骤才能获得解码后的base-64的文本表示形式。

el.nodeTypedValue的结果将是一个字节数组,其中包含解码的base-64数据。这需要转换为文本字符串。我以该示例为utf-8,但您可能需要对其进行修改以适合您的文本编码。

var xmlDom = new ActiveXObject("Microsoft.XMLDOM");
var el = xmlDom.createElement("tmp");
el.dataType = "bin.Base64"
el.text = "aGVsbG8gd29ybGQ=";
//WScript.Echo(el.nodeTypedValue);

// Use a binary stream to write the bytes into
var strm = WScript.CreateObject("ADODB.Stream");
strm.Type = 1;
strm.Open();
strm.Write(el.nodeTypedValue);

// Revert to the start of the stream and convert output to utf-8
strm.Position = 0;
strm.Type = 2;
strm.CharSet = "utf-8";

// Output the textual equivalent of the decoded byte array
WScript.Echo(strm.ReadText());
strm.Close();

以下是输出:

Output image

请注意,此代码不适合生产。使用完成后,您需要整理一下对象。

还有其他方法可以将字节数组转换为字符。这只是一个例子。