在 JavaScript 中编码为字母数字

Pen*_*ica 2 javascript string encoding urlencode node.js

如果我有一个随机字符串并想将其编码为另一个仅包含字母数字字符的字符串,那么在 JavaScript / NodeJS 中最有效的方法是什么?

显然,必须可以在需要时将输出字符串转换回原始输入字符串。

谢谢!

Gro*_*ify 6

要编码为字母数字字符串,您应该使用字母数字编码。一些流行的包括十六进制 (base16)、base32、base 36、base58 和 base62。使用十六进制的替代方法是因为较大的字母表会产生较短的编码字符串。这是一些信息:

  • 十六进制很受欢迎,因为它很常见。
  • Base32 和 Base36 可用于不区分大小写的编码。Base32 更具人类可读性,因为它删除了一些容易误读的字母。Base32 用于游戏和许可证密钥。
  • Base58 和 Base62 对于区分大小写的编码很有用。Base58 还旨在通过删除一些容易误读的字母来提高人类可读性。Base58 被 Flickr、比特币等使用。

在 NodeJS 中,本机支持十六进制编码,可以按如下方式完成:

// Encode
var hex = new Buffer(string).toString('hex');

// Decode
var string = new Buffer(hex, 'hex').toString();
Run Code Online (Sandbox Code Playgroud)

重要的是要注意其中一些有不同的实现。例如,Flickr 和比特币使用不同的 Base58 实现。