Как декодировать строку Base64 в JScript - PullRequest
0 голосов
/ 07 декабря 2018

Мне нужно декодировать строку Base64 в JScript, и я попробовал этот код для выполнения целевого действия:

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 голосов
/ 07 декабря 2018

Вам необходимо выполнить некоторые дополнительные шаги, чтобы получить текстовое представление декодированного 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

Обратите внимание, что этот код не подходит для производства.Вам нужно будет привести в порядок объекты после завершения их использования.

Существуют и другие способы преобразования массива байтов в символы.Это только один из примеров.

...