如何在 Node.js 中检查字符串是明文还是 base64 格式

How to check if a string is plaintext or base64 format in Node.js

我想检查我函数的给定字符串是纯文本还是 base64 格式。我能够将纯文本编码为 base64 格式并将其反转。 但是我想不出任何方法来验证字符串是否已经是 base64 格式。谁能建议在节点 js 中执行此操作的正确方法?是否有任何 API 可以在节点 js 中执行此操作。

编码是字节级的。 如果您正在处理字符串,那么您所能做的就是猜测或保留元数据信息与您的字符串以识别

但您可以查看这些库:

  1. https://www.npmjs.com/package/detect-encoding
  2. https://github.com/mooz/node-icu-charset-detector

有效的 base64 字符串是所有纯文本字符串的子集。假设我们有一个字符串,问题是它是否属于那个子集。一种方法是 Basit Anwer 建议的方法。不过,这些库需要安装 libicu。一种更便携的方法是使用内置的 Buffer:

Buffer.from(str, 'base64')

不幸的是,这个解码函数不会抱怨非Base64字符。它只会忽略非 base64 字符。所以,单靠它是无济于事的。但是您可以尝试将其编码回 base64 并将结果与​​原始字符串进行比较:

Buffer.from(str, 'base64').toString('base64') === str

此检查将判断 str 是否是纯 base64。