我必须在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
,但返回消息是一堆汉字。这是一个屏幕作为证明
而且,还有另一种方法来解码Base64编码的字符串吗?
答案 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();
以下是输出:
请注意,此代码不适合生产。使用完成后,您需要整理一下对象。
还有其他方法可以将字节数组转换为字符。这只是一个例子。