Nodejs Buffer.from возвращает недопустимое значение - PullRequest
1 голос
/ 11 марта 2020

Buffer.from(' ???', 'base64')

Этот код возвращает пустой буфер вместо выдачи ошибки, что является ожидаемым поведением. Как правильно проверить достоверность закодированных данных и декодировать их в nodejs?

1 Ответ

0 голосов
/ 11 марта 2020

В документах nodejs 12.16 , похоже, ничего нет о том, что выдается ошибка, если символы в данной строке не являются частью указанной кодировки.

Фактически, небольшой эксперимент, кажется, предполагает, что Buffer.from() просто игнорирует такие символы, которые не принадлежат кодировке.

try{
    const str1 = "ai?73";
    const str2 = "ai73";
    const str3 = "??a?i73??";
    const encoded1 = Buffer.from(str1,'base64').toString('base64');
    const encoded2 = Buffer.from(str2,'base64').toString('base64');
    const encoded3 = Buffer.from(str3,'base64').toString('base64');
    console.log(`On base64 encoding ${str1}: ${encoded1}`);
    console.log(`On base64 encoding ${str2}: ${encoded2}`);
    console.log(`On base64 encoding ${str3}: ${encoded3}`);
}catch(e){
    console.error(`ERROR:`,e);
}

Это дает следующий вывод:

On base64 encoding ai?73: ai73
On base64 encoding ai73: ai73
On base64 encoding ??a?i73??: ai73

Итак, ваш лучший Ставка будет заключаться в использовании пакета, подобного is-base64, как предложено пользователем dajnz в комментариях.

https://www.npmjs.com/package/is-base64

...